В базовой иерархии шаблонов, вы можете использовать следующие шаблоны для категорий:

  • category-{slug}.php
  • category-{id}.php
  • category.php

Но, если вам нужно применять разные php-шаблоны для категорий и подкатегорий, вы можете использовать хук category_template и проверять, есть ли у текущей категории родительский элемент, и в этом случае загружать, например, subcategory.php:

function wpd_subcategory_template( $template ) {
    $cat = get_queried_object();
    if( 0 < $cat->category_parent )
        $template = locate_template( 'subcategory.php' );
    return $template;
}
add_filter( 'category_template', 'wpd_subcategory_template' );

Если же у вас задача сделать разные шаблоны для каждого уровня вложенности, например такого:

  • continent
    • country
      • city

То, мы должны использовать следующую логику: сначала смотрим, есть ли у города дочерний элемент, если нет, мы вызываем шаблон для города. Остальная часть кода предназначена для проверки наличия у категории родительского элемента.

function wpd_subcategory_template( $template ) {
    $cat        = get_queried_object();
    $children   = get_terms( $cat->taxonomy, array(
        'parent'     => $cat->term_id,
        'hide_empty' => false
    ) );

    if( ! $children ) {
        $template = locate_template( 'category-country-city.php' );
    } elseif( 0 < $cat->category_parent ) {
        $template = locate_template( 'category-country.php' );
    }

    return $template;
}
add_filter( 'category_template', 'wpd_subcategory_template' );

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *