Сделать WordPress подкатегорий использовать шаблон категории

У меня есть шаблон категория: категории-проектов.в PHP

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

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

3 ответов


один из способов сделать это-подключиться к template_redirect в своем :

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');

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

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


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

Я нашел лучшую альтернативу, используя 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/