Рубрики WordPress следуют определенной иерархии шаблонов. В большинстве случаев мы используем “category-$slug.php” для перезаписи определенной рубрики для придания ей полностью другого вида и функциональности (“category-projects.php” для рубрики “Project”). Если у вас есть дочерние рубрики (Дизайн (Design), Разработка (Development) и т.д.) в «Проектах», они также подчиняются иерархии шаблонов, и вам необходимо будет создавать “category-design.php” и “category-development.php” для придания им такого же вида, как и у рубрики Проекта. Сниппет, предлагаемый в этой статье, позволит вам настроить несколько или все дочерние рубрики чтобы те использовали родительский шаблон. В предложенном выше примере рубрики Design и Development также будут использовать шаблон “category-projects.php” вместо их собственного шаблона “category-$slug.php”.
Сниппет
add_action('template_redirect', 'wpds_parent_category_template'); function wpds_parent_category_template() { if (!is_category()) return true; // получаем объект текущей рубрики $cat = get_category(get_query_var('cat')); while ($cat && !is_wp_error($cat)) { $template = TEMPLATEPATH . "/category-{$cat->slug}.php"; // загружаем, если файл шаблона существует. if (file_exists($template)) { load_template($template); exit; } $cat = $cat->parent ? get_category($cat->parent) : false; } }
Перезапись шаблона для определенных рубрик
Только дочерняя для “Projects” рубрика “Design” будет использовать “category-projects.php”.
add_action('template_redirect', 'wpds_parent_category_template'); function wpds_parent_category_template() { if (!is_category()) return true; // Перезаписываем шаблон для определенной рубрики "design", чьей родительской рубрикой является "projects" if (is_category('design') && cat_is_ancestor_of(get_cat_id('projects'), get_query_var('cat'))) { $cat = $cat->parent ? get_category($cat->parent) : false; $template = TEMPLATEPATH . "/category-{$cat->slug}.php"; // загружаем, если файл шаблона существует. if (file_exists($template)) { load_template($template); exit; } } }
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.
Источник: WPDevSnippets