Taxonomy: свой шаблон для дочек или родителей
На сайте создана taxonomy древовидная с rewrite slug: lessons. адрес такой:
example.com/lessons/ (lessons оформлена через кастомный шаблон page-lessons.php, в виде ссылок на рубрики).
В ней есть рубрики:
example.com/lessons/mathematics/
example.com/lessons/russian/
example.com/lessons/geography/
example.com/lessons/history/
example.com/lessons/english/
В этих рубриках есть тоже рубрики, пример:
example.com/lessons/mathematics/9/
example.com/lessons/russian/5/
example.com/lessons/geography/5/
example.com/lessons/history/2/
example.com/lessons/english/10/
Для /mathematics, /russian, /geography, /history, /english используется шаблон taxonomy-lessons.php (также он используется для дочек)
Как задать шаблон для дочек уровня /9, /5, /2, /10 и только. Их много.
Или как задать шаблон для родителей, тобишь для: /mathematics, /russian, /geography, /history, /english?
Спасибо!
Сам шаблон нужно указать через фильтр template_include. В нем нужно проверять все вот это что вам нужно. Например для 9, 5, 6 и т.д. проверяем есть ли родитель и является ли родитель родителя lessons. Используй эти функции: cat_is_ancestor_of() is_category() get_ancestors() get_category()
Примерно будет так: в шаблоне лежит файл
lessons-sub2-tpl.php
, который отвечает за вывод 3-го уровня рубрик (5 9 ...) и для второго уровняlessons-sub1-tpl.php
:Код не тестировал, возможны недочеты или мелкие ошибки, но общий принцип думаю понятен
Благодаря этому примеру я придумал более изящнее решение, нужно чтобы код просто проверял, если это родитель то выводим такой то шаблон, если не родитель то выводим обычный. Помогите реализовать код, никак не могу додуматься как сделать, что не так, почему не работает:
Вместо
is_category ($current_cat->parent)
просто$current_cat->parent
Тоже не хочет(
Что-то ты не то делаешь! Я не поленился поставил вот этот код в functions.php и создал файл 'portfolio-page-template.php' в теме - все работает!
единственное еще замечание - строку
if( ! is_category() ) return $template;
надо оставить... В остальном код работает, если у тебя не работает, то ищи проблему где-то еще...Вот такой код должен быть
Да действительно, код работает! Спасибо!
Только немного пришлось поменять
if( ! is_category() ) return $template;
наif( ! is_tax('name') ) return $template;
Теперь для всех дочек, применяется шаблон
portfolio-page-template.php
Который раз Вы ,Kama, спасаете мой сайт) Спасибо Вам!