Задать вопрос
facepook
@facepook
С детства болею неизлечимым сео-даром!

Разные шаблоны для категорий записей Wordpress, как реализовать по данному примеру?

Всем привет.
Я создал произвольный тип записей Wordpress и хочу, чтобы у них был свой шаблон. Подскажите как это сделать по моему примеру:
Я уже использую разные шаблоны, для записей в зависимости от их рубрик, сделал я это так:
/**
 * Определим константу, которая будет хранить путь к папке 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_category() as $cat ) :
 
        if ( file_exists( SINGLE_PATH . '/single-cat-' . $cat->slug . '.php' ) ) {
            return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';
        } elseif ( file_exists( SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php' ) ) {
            return SINGLE_PATH . '/single-cat-' . $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-tag-' . $tag->slug . '.php' ) ) {
            return SINGLE_PATH . '/single-tag-' . $tag->slug . '.php';
        } elseif ( file_exists( SINGLE_PATH . '/single-tag-' . $tag->term_id . '.php' ) ) {
            return SINGLE_PATH . '/single-tag-' . $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;
}


Создал разные шаблоны типа single-cat-ID.php - все работает!!!

Теперь, я добавил произвольные типы записей вордпрес и добавил к ним категории, вот таким способом:
add_action( 'init', 'true_register_post_type_init' ); // Использовать функцию только внутри хука init
 
function true_register_post_type_init() {
	$labels = array(
		'name' => 'Down',
		'singular_name' => 'Down', // админ панель Добавить->Функцию
		'add_new' => 'Добавить Down',
		'add_new_item' => 'Добавить Down страницу', // заголовок тега <title>
		'edit_item' => 'Редактировать Down',
		'new_item' => 'Новая Down страница',
		'all_items' => 'Все Down',
		'view_item' => 'Просмотр Down страницу на сайте',
		'search_items' => 'Искать Down',
		'not_found' =>  'Down не найдено.',
		'not_found_in_trash' => 'В корзине нет Down страниц.',
		'menu_name' => 'Down страницы' // ссылка в меню в админке
	);
	$args = array(
		'labels' => $labels,
		'public' => true,
		'show_ui' => true, // показывать интерфейс в админке
		'has_archive' => true, 
		'menu_icon' => get_stylesheet_directory_uri() .'/img/function_icon.png', // иконка в меню
		'menu_position' => 8, // порядок в меню
		'supports' => array( 'title', 'editor', 'custom-fields')
	);
	register_post_type('down', $args);
}

add_action( 'init', 'create_book_taxonomies', 0 );
 
// функция, создающая таксономию "Разделы" для постов типа "Down страницы"
 
function create_book_taxonomies(){
 
  // определяем заголовки для 'Разделы'
  $labels = array(
	'name' => _x( 'Разделы', 'taxonomy general name' ),
	'singular_name' => _x( 'Разделы', 'taxonomy singular name' ),
	'search_items' =>  __( 'Искать Разделы' ),
	'popular_items' => __( 'Популярные Разделы' ),
	'all_items' => __( 'Все Разделы' ),
	'parent_item' => null,
	'parent_item_colon' => null,
	'edit_item' => __( 'Править Раздел' ),
	'update_item' => __( 'Обновить Раздел' ),
	'add_new_item' => __( 'Добавить новый Раздел' ),
	'new_item_name' => __( 'Имя нового Раздела' ),
	'separate_items_with_commas' => __( 'Separate writers with commas' ),
	'add_or_remove_items' => __( 'Добавить или удалить Раздел' ),
	'choose_from_most_used' => __( 'Choose from the most used writers' ),
	'menu_name' => __( 'Разделы' ),
  );
// Добавляем древовидную таксономию 'Разделы' (как рубрики), чтобы сделать НЕ девовидную (как метки) значение для 'hierarchical' => false,
 
register_taxonomy('na', 'down',array(
	'hierarchical' => true,
	'labels' => $labels,
	'show_ui' => true,
	'query_var' => true,
	'rewrite' => array( 'slug' => 'na' ),
  ));
}


Получилось! Хочу сделать, для этих записей свой шаблон, тем же способом, что и для обычных записей - не получается... Подскажите, почему?
  • Вопрос задан
  • 6197 просмотров
Подписаться 5 Оценить Комментировать
Решения вопроса 1
facepook
@facepook Автор вопроса
С детства болею неизлечимым сео-даром!
РЕШЕНО!
Достаточно было просто создать копию шаблона записи и добавить к нему название типа поста.
В моем случае single-down.php
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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