Заставить Wordpress использовать подкатегории - PullRequest
8 голосов
/ 25 июня 2010

У меня есть шаблон категории: category-projects.php

У этой категории есть подкатегории, но они ссылаются на шаблон category.php для инструкций вместо родительской категории. Как сделать так, чтобы подкатегории ссылались на шаблоны родительских категорий в каскадном порядке ссылок на шаблоны?

* Обратите внимание, я говорю об URL уровня категории, а не о сообщениях.

Ответы [ 3 ]

13 голосов
/ 25 июня 2010

Один из способов сделать это - подключиться к действию template_redirect в файле functions.php:

function myTemplateSelect() {
    if (is_category() && !is_feed()) {
        if (is_category(get_cat_id('projects')) || cat_is_ancestor_of(get_cat_id('projects'), get_query_var('cat'))) {
            load_template(TEMPLATEPATH . '/category-projects.php');
            exit;
        }
    }
}

add_action('template_redirect', 'myTemplateSelect');
1 голос
/ 15 октября 2017

Ответ Ричарда работает, но он сильно мешает другим плагинам.

Я нашел лучшую альтернативу, используя add_filter & template_include в качестве примера ниже

add_filter( 'template_include', 'my_callback' );

function my_callback( $original_template ) {
    if ( some_condition() ) {
        return SOME_PATH . '/some-custom-file.php';
    } else {
        return $original_template;
    }
}

Кредит дляhttps://markjaquith.wordpress.com/2014/02/19/template_redirect-is-not-for-loading-templates/

1 голос
/ 25 июня 2010

Насколько я знаю;в соответствии с иерархией шаблонов wp, category-samplecat.php применяется только к категории с именем слага «samplecat».Таким образом, это невозможно сделать таким образом.

Но в файле category.php (который применяется к каждой категории, у которой нет специального файла шаблона) вы можете выполнить условную проверку, если текущая категория являетсяпотомок «проекта» (используя этот метод в моем ответе на другой ваш вопрос), и если это так, вы можете применить к нему ту же структуру category-projects.php или включить category-projects.php.

...