Intereting Posts
Customizer: уникальный идентификатор, который отличает, какой элемент управления загрузкой изображения загружает изображение W3 Total Cache не может действительно обнаружить вещи Страница параметров плагина: флажки группировки работа с большим выходом HTML через код плагина Как показать профили приятеля, если вы не вошли в систему Мультимедийные демо-данные для нового сайта Функция WordPress get_the_terms () возвращает ошибку «Недействительная таксономия» Любой тип персонализированного сообщения на первой странице и в архиве Используя один пользовательский taxonomy.php для двух пользовательских таксономий? Что такое rich_editing? Когда я пытаюсь использовать контактную форму 7, она разбивает мою страницу Страница архивирования, показывающая неправильный месяц Изменение пароля MySQL через WHM – влияет ли это на WordPress? Исключить последние сообщения из определенной категории в wp_query () Переопределение полей в Add New Post admin ui

Добавить шаблоны тем для дочерних категорий в иерархию шаблонов

на моем сайте у меня есть много категорий и подкатегорий (детская категория)

скажем, как имя моей одной категории

печать
4 цвета
2 цвета
офсетная печать

Exmple я хочу, когда вы посетите страницу с 4-мя категориями цветов, она покажет все 4 должности категории цвета с определенным шаблоном. Я пробовал много кода, но на самом деле не дал мне идеального результата. bellow – это тот, который используется, это хорошо работает, но теперь проблема заключается в том, что он также влияет и на другую дочернюю категорию.

add_action('template_redirect', 'load_category_tree_template'); function load_category_tree_template() { if (is_category() && !is_feed()) { // replace 'your-base-category-slug' with the slug of root category $base_tree_cat_id = get_cat_id('printing-products'); // get current category id $catid = get_query_var('cat'); if (is_category($base_tree_cat_id) || cat_is_ancestor_of($base_tree_cat_id, $catid)) { load_template(STYLESHEETPATH . 'category-printing.php'); exit; } } } 

Не используйте template_redirect для загрузки альтернативных шаблонов, так как вы можете разбить любую функциональность, использующую этот крюк, для работы с меньшим приоритетом, чем ваш. Правильный крючок – template_include . Это касается Марка Джаквита, одного из ведущих разработчиков WP. https://markjaquith.wordpress.com/2014/02/19/template_redirect-is-not-for-loading-templates/

Тем не менее, было бы более целесообразно использовать фильтр category_template в этом случае.

Я использую это, основываясь на фрагменте кода, который я нашел и плохо не отмечал источник 🙁

 function wpse_233263_parent_category_hierarchy() { $templates = array(); $category = get_queried_object(); if ( $category->category_parent != 0 ) { $parent = get_category( $category->category_parent ); if(!empty($parent)) { $templates[] = "category-{$parent->slug}-{$category->slug}.php"; $templates[] = "category-{$parent->slug}.php"; $templates[] = "category-{$parent->term_id}.php"; } } else { // Otherwise use the usual default category template files $templates[] = "category-{$category->slug}.php"; $templates[] = "category-{$category->term_id}.php"; } $templates[] = 'category.php'; return locate_template( $templates ); } add_filter( 'category_template', 'wpse_233263_parent_category_hierarchy' ); 

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

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