Вопрос или проблема
Есть небольшая проблема, которую я не могу решить сам:
Я создал пользовательский тип записи (tours
) с пользовательской таксономией (tour categories
). Я создал файл taxonomy-tour-categories.php
для отображения archive
страницы для каждой категории туров. Все работает отлично.
У меня есть tour category
(School tours
), которая требует другого макета, поэтому я добавил второй шаблон taxonomy-tour-categories-shool-tours.php
с моим желаемым макетом. Опять же, все работает отлично.
Проблема в том, что категория туров 'school tours'
имеет свои подкатегории (такие как 'workshops'
, 'science labs'
и так далее), которые я хотел бы отображать с помощью шаблона taxonomy.tour-categories-school-tours.php
, но их отображает шаблон taxonomy.tours-categories.php
. Почему так?
Я думал, что WordPress – когда файл шаблона для конкретного термина отсутствует – вернется к шаблону уровня выше (в данном случае taxonomy.tours-categories-school-tours.php
). Что я упускаю?
Спасибо за вашу помощь!
Как видно на этом изображении, иерархия шаблонов ограничивается taxonomy-$taxonomy-$term.php
.
Я не знаю, почему подтермин возвращается к taxonomy-$taxonomy.php
, но, я полагаю, он ищет taxonomy-$taxonomy-$term.php
, где $term
будет workshops
, science labs
и так далее. И поскольку таких файлов не существует (я так предполагаю), он возвращается к taxonomy-$taxonomy.php
.
Вы можете воспользоваться обходным путем в вашем файле taxonomy-$taxonomy.php
, который загружает запрашиваемый файл taxonomy-$taxonomy-$term.php
, когда $term
имеет родительский $term
.
Ответ или решение
Ваша задача по созданию индивидуального шаблона архивов для подкатегорий в WordPress достаточно интересная и распространенная. Давайте разберемся, как интегрировать шаблон taxonomy-tour-categories-school-tours.php
для подкатегорий вашего кастомного налогового слоя.
Проблема
Вы уже создали кастомный тип записи tours
и соответствующую таксономию tour categories
. Это хороший старт, и у вас есть базовая возможность отображения всех категорий. Однако, когда дело касается подкатегорий, работа идет не так, как ожидалось. Подкатегории, такие как 'workshops'
и 'science labs'
, используют основной шаблон taxonomy-tour-categories.php
, вместо того чтобы подхватывать индивидуальный шаблон для родительской категории.
Причина
Как вы правильно заметили, WordPress ищет файл шаблона по иерархии шаблонов. Для категорий WordPress сначала ищет файл taxonomy-$taxonomy-$term.php
. Если такой файл не найден, он переходит к taxonomy-$taxonomy.php
. В вашем случае, для подкатегорий шаблон WordPressрав илтиметодие общ, и если подкатегории не имеют своего собственного шаблона — они отображаются в шаблоне базовой категории.
Решение
Вы можете использовать обходное решение в файле taxonomy-tour-categories.php
, чтобы проверить, принадлежит ли текущая категория родительской категории 'school tours'
и, если да, загрузить необходимый для вашей родительской категории шаблон. Вот как это можно сделать:
- Обновите файл
taxonomy-tour-categories.php
:
<?php
// Получаем текущую категорию
$current_term = get_queried_object();
// Проверяем, есть ли у текущей категории родительская категория
if ($current_term->parent) {
// Получаем родительскую категорию
$parent_term = get_term($current_term->parent, 'tour_categories');
// Проверяем, является ли родительская категория 'school tours'
if ($parent_term->slug === 'school-tours') {
// Подключаем шаблон для 'school tours'
include(locate_template('taxonomy-tour-categories-school-tours.php'));
exit; // не забудьте завершить выполнение скрипта
}
}
// Если родительская категория не 'school tours', продолжаем как обычно
?>
<!-- Ваш стандартный код для отображения других таксономий -->
Этот код проверяет, является ли родительской категорией 'school tours'
, и если это так, подключает соответствующий шаблон. Так вы сможете использовать индивидуальный шаблон для подкатегорий вашей выбранной категории.
Заключение
Используя данный подход, вы сможете кастомизировать ваш сайт в WordPress более гибко, что позволит вам легко управлять отображением подкатегорий. Не забудьте тщательно проверить, чтобы все подкатегории корректно использовали ваш новый шаблон без каких-либо проблем.
Эта методология не только улучшает визуальное восприятие для пользователей, но и способствует повышению SEO-оптимизации, так как предоставляет пользователям более релевантный контент в зависимости от их интересов.