WordPress: Один и тот же шаблон для рубрик и подрубрик

Может быть кто-то сталкивался с такой необходимостью, как применение одного шаблона для родительской рубрики и её подрубрик. И это притом, чтобы не затрагивать шаблон категорий по умолчанию category.php.

То есть, создается шаблон для определённой рубрики WordPress, в которой есть подрубрики. И нужно сделать так, чтобы все эти подрубрики использовали шаблон родительской темы.

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

Шаблон для рубрик и подрубрик. Решение

Есть более простой способ решить эту задачу, не прибегая к многочисленным копиям шаблона. Просто добавьте в свой файл functions.php следующий код:

function new_subcategory_hierarchy() {
    $category = get_queried_object();

    $parent_id = $category->category_parent; // ID родителя

    $templates = array();

    if ($parent_id == 0) {
        // Если родителя нет, используем значения по умолчанию
        $templates[] = "category-{$category->slug}.php";
        $templates[] = "category-{$category->term_id}.php";
        $templates[] = 'category.php';
    } else {
        // Создаем массив $templates на замену стандартному
        $parent = get_category($parent_id);

        // Если для текущей рубрики определены файлы шаблона, они будут использованы в первую очередь
        $templates[] = "category-{$category->slug}.php";
        $templates[] = "category-{$category->term_id}.php";

        // Потом только файлы шаблонов родительской рубрики
        $templates[] = "category-{$parent->slug}.php";
        $templates[] = "category-{$parent->term_id}.php";
        $templates[] = 'category.php';
    }
    return locate_template($templates);
}
add_filter('category_template', 'new_subcategory_hierarchy');

Источник: https://gist.github.com/gitwalt/1208b964174194c939ec

Оставить ответ

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