Сделать 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/