Рубрики 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
