Шаблон для custom post type и custom tax
Есть зарегистрированный custom post type (тип записи) и созданный для него custom tax (таксономия).
Допустим, я хочу посмотреть некоторые записи из произвольного типа (допустим video), которые принадлежат некоторой категории (animals) - wordpress создаёт ссылку типа sitename/video/animals.
Стиль этой страницы задаётся файлом index.php
Вопрос следующий: возможно ли использовать отдельный файл шаблона (хотя бы для custom post type), или необходимы какие-то шаманские действия?
Пробовал всевозможные комбинации файлов, но результата нет.
Есть вариант проверять адрес сайта, и в зависимости от него выводить данные по определённым шаблонам.
Заранее Спасибо!
Конкретно сейчас пользуюсь таким способом, сам только осваиваю (строго не судите ) это только тестовые рабочие наработки для отдельных категорий произвольных таксономий
у меня произвольная таксономия filetape с подгруппой video,
зашел в директорию темы создал папку single туда поместил файл single-filetape-video.php теперь все посты которые относятся к таксономии video имеют необычный дизайн
для вас по аналогии, только подставьте свои таксономии и имена файлов
вот оригинал https://toster.ru/q/213094
/* тут код get_the_category_by_ID get_the_filetape_by_ID - поменял все category на slug своей таксономии */ function get_the_filetape_by_ID( $cat_ID ) { $cat_ID = (int) $cat_ID; $category = get_term( $cat_ID, 'filetype' ); if ( is_wp_error( $category ) ) return $category; return ( $category ) ? $category->name : ''; } // =================================================== // =================================================== /** * ============== отдельные стрмници для категорий ============== * **/ /** * Определим константу, которая будет хранить путь к папке single * **/ define( SINGLE_PATH, TEMPLATEPATH . '/single' ); /** * Добавим фильтр, который будет запускать функцию подбора шаблонов */ add_filter( 'single_template', 'my_single_template' ); /** * Функция для подбора шаблона */ function my_single_template( $single ) { global $wp_query, $post, $down; /** * Проверяем наличие шаблонов по ID поста. * Формат имени файла: single-ID.php */ if ( file_exists( SINGLE_PATH . '/single-' . $post->ID . '.php' ) ) { return SINGLE_PATH . '/single-' . $post->ID . '.php'; } /** * Проверяем наличие шаблонов для категорий, ищем по ID категории или слагу * Формат имени файла: single-cat-SLUG.php или single-cat-ID.php */ foreach ( (array) get_the_filetape() as $cat ) : if ( file_exists( SINGLE_PATH . '/single-filetape-' . $cat->slug . '.php' ) ) { return SINGLE_PATH . '/single-filetape-' . $cat->slug . '.php'; } elseif ( file_exists( SINGLE_PATH . '/single-filetape-' . $cat->term_id . '.php' ) ) { return SINGLE_PATH . '/single-filetape-' . $cat->term_id . '.php'; } endforeach; /** * Проверяем наличие шаблонов для тэгов, ищем по ID тэга или слагу * Формат имени файла: single-tag-SLUG.php или single-tag-ID.php $wp_query->in_the_loop = true; foreach ( (array) get_the_tags() as $tag ) : if ( file_exists( SINGLE_PATH . '/single-filetape-' . $tag->slug . '.php' ) ) { return SINGLE_PATH . '/single-filetape-' . $tag->slug . '.php'; } elseif ( file_exists( SINGLE_PATH . '/single-filetape-' . $tag->term_id . '.php' ) ) { return SINGLE_PATH . '/single-filetape-' . $tag->term_id . '.php'; } endforeach; $wp_query->in_the_loop = false; */ /** * Если ничего не найдено открываем стандартный single.php */ if ( file_exists( SINGLE_PATH . '/single.php' ) ) { return SINGLE_PATH . '/single.php'; } return $single; } /** END * ============== отдельные страницы для категорий ============== * **/Вам нужно создать файл нужный в каталоге темы... Вот схема - смотрите иерархию файлов шаблона.
Т.е. тебе нужно создать один из таких файлов:
Тут соответственно нужно заменить $taxonomy на название таксономии $term на название элемента таксономии.
По вопросу кажется не точно ты написал... В твоем случае такса называется video и у нее есть элемент animals. Тогда чтобы сделать отдельный шаблон для этого элемент нужно создать файл taxonomy-video-animals.php и в нем описать вывод...
Есть еще вариант создать файл шаблон, тут все очень гибка, но нужно разбираться. Подробнее читай template_include. Но насколько я понимаю в твоем случае можно обойтись стандартными файлами и логикой...