Всем привет.
Я создал произвольный тип записей 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' ),
));
}
Получилось! Хочу сделать, для этих записей свой шаблон, тем же способом, что и для обычных записей - не получается... Подскажите, почему?