Шаблон для custom post type и custom tax

Есть зарегистрированный custom post type (тип записи) и созданный для него custom tax (таксономия).

Допустим, я хочу посмотреть некоторые записи из произвольного типа (допустим video), которые принадлежат некоторой категории (animals) - wordpress создаёт ссылку типа sitename/video/animals.

Стиль этой страницы задаётся файлом index.php

Вопрос следующий: возможно ли использовать отдельный файл шаблона (хотя бы для custom post type), или необходимы какие-то шаманские действия?

Пробовал всевозможные комбинации файлов, но результата нет.

Есть вариант проверять адрес сайта, и в зависимости от него выводить данные по определённым шаблонам.

Заранее Спасибо!

0
anatolykulikov
8.5 лет назад
  • 0
    kolshix 784 paxtoy.com

    Конкретно сейчас пользуюсь таким способом, сам только осваиваю (строго не судите ) это только тестовые рабочие наработки для отдельных категорий произвольных таксономий

    у меня произвольная таксономия 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 * ============== отдельные страницы для категорий ============== *  **/
    Комментировать
  • 0
    Kama 9829

    Вам нужно создать файл нужный в каталоге темы... Вот схема - смотрите иерархию файлов шаблона.

    Т.е. тебе нужно создать один из таких файлов:

    • taxonomy-$taxonomy-$term.php
    • taxonomy-$taxonomy.php
    • taxonomy.php

    Тут соответственно нужно заменить $taxonomy на название таксономии $term на название элемента таксономии.

    По вопросу кажется не точно ты написал... В твоем случае такса называется video и у нее есть элемент animals. Тогда чтобы сделать отдельный шаблон для этого элемент нужно создать файл taxonomy-video-animals.php и в нем описать вывод...

    Есть еще вариант создать файл шаблон, тут все очень гибка, но нужно разбираться. Подробнее читай template_include. Но насколько я понимаю в твоем случае можно обойтись стандартными файлами и логикой...

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация