Ferzet
@Ferzet

Свой шаблон category для дочерних рубрик?

На сайте есть рубрика "Уроки" в ней есть рубрики предметов "Математика, Русский, Физика, Химия, История, Биология, География". В каждой рубрике предмета есть рубрики заданий "Задание 1, Задание 2, Задание 3, Задание 4, Задание 5, Задание 6 и так до 20-ого"
Вопрос: Как сделать для всех дочерних рубрик предметов (1-20 задние), свой шаблон вывода материалов этих рубрик?
Есть вариант, перечислить все ID этих рубрик (их 140 штук) и вывести в category.php для них нужный html код. Но это не совсем правильно. Получается слишком громоздкий код.

<?php if ( is_category(array('1','2','3','4','5','6','7','8','9' и т.д...)) ){ ?>                       
   <html></html>                 
<?php } ?>


Есть ли какой то другой способ это реализовать? Более правильный. Спасибо всем за ответы.
  • Вопрос задан
  • 1663 просмотра
Пригласить эксперта
Ответы на вопрос 5
wppanda5
@wppanda5 Куратор тега WordPress
WordPress Mедведь
Я бы сделал так.
$template = get_term_meta($term->term_id,'template',true);
get_template_part( 'tamplates/terms/template', $template );

Настройка будет примерно так
b6d6e57ff2.jpg
шаблон будет как то так
d72b92b092.jpg
Ответ написан
werty1001
@werty1001
undefined
$lesson_id = 22; // ID категории уроки
$data = get_queried_object();

if( in_array( $lesson_id, get_ancestors( $data->term_id, $data->taxonomy ) ) ) :

	echo 'Это дочерняя категория категории уроки.';

endif;

А вообще лучше сделать отдельную таксономию и создать файл taxonomy_name.php
Ответ написан
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Если вас интересует именно "правильно", то соглашусь с Олег - предметы и уроки это отдельные объекты (в данном случае - таксономии). Соответственно, и шаблоны разные прям "из коробки". Для "вложенного" урл просто укажите в аргументе rewrite значение "родительский_слаг/дочерний_слаг" (например, "discipline/lesson")

Есть еще вариант просто подставлять кастомный шаблон на хуке template_include.
Ответ написан
Комментировать
Ferzet
@Ferzet Автор вопроса
Спасибо все кто ответил. Сегодня весь день разбирался в таксономиях. Запутался еще больше) Таксономию создал древовидную. В админке wordpressa есть теперь пункт "Уроки", выглядит как обычные стандартные рубрики. Создал там раздел "Уроки" и в нем предметы(Математика, Русский, Физика и тд). Теперь никак не могу создать для нее кастомные шаблоны. Делаю taxonomy-lessons.php выводит ошибку 404. Также при создании новой записи и выбора ей рубрики предмета (Математика например), запись все равно не выводится в этой рубрике, она попадает в стандартную рубрику "Без категории" но и в таксономии она тоже есть. Прошу посмотреть профессиональным взглядом код который я накалякал, все ли верно. И дать совета) Спасибо.

//Taxonomy для уроков

/// хук через который подключается функция
/// регистрирующая новые таксономии
add_action( 'init', 'create_lessons_taxonomy', 0 );


// функция, создающая 1 новую таксономию
function create_lessons_taxonomy(){
    
    // Добавляем древовидную таксономию
    register_taxonomy('lessons', array('post'), array(
	   'hierarchical' => true,
	   'labels' => array(
             // определяем заголовки'
	           'name' => 'Уроки',
	           'singular_name' => 'Уроки',
	           'search_items' =>  'Найти урок',
	           'all_items' => 'Все уроки',
	           'parent_item' => null,
                //текст для родительского элемента таксономии. Этот аргумент не используется для не древовидных таксономий. По умолчанию null
	           'parent_item_colon' => null,
                //текст для родительского элемента таксономии, тоже что и parent_item но с двоеточием в конце. По умолчанию нет или
	           'edit_item' => 'Редактировать урок',
	           'update_item' => 'Обновить урок',
	           'add_new_item' => 'Добавить новый урок',
	           'new_item_name' => 'Название нового урока',
	           'menu_name' => 'Уроки'
       ),
       'public' => true, 
        /* каждый может использовать таксономию, либо
        только администраторы, по умолчанию - true */
       'show_in_nav_menus' => true,
        /* добавить на страницу создания меню */
	   'show_ui' => true,
        /* добавить интерфейс создания и редактирования */
       'show_tagcloud' => true,
        /* нужно ли разрешить облако тегов для этой таксономии */
	   'query_var' => true,
        /* разрешено ли использование query_var, также можно 
        указать строку, которая будет использоваться в качестве 
        него, по умолчанию - имя таксономии */
	   'rewrite' => array( 
           /* настройки URL пермалинков */
           'slug' => 'lessons', // ярлык
           'hierarchical' => false // разрешить вложенность
            ),
    ));
    
}
Ответ написан
@SindWebDeveloper
А ты случайно префикс для рубрик не устанавливал свой?
Настройки -> Постоянные ссылки -> Префикс для рубрик.
Wordpress такая гавнина не гибкая, что может и обдеться если его родной префикс category пытаются удалить из url.
А обижается он в таком случае перенаправлением на неверный шаблон.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы