Как получить выпадающий список шаблонов в атрибутах страницы для произвольного типа записи?

1 дек. 2011 г., 04:50:48
Просмотры: 27.4K
Голосов: 10

Когда я регистрирую свой произвольный тип записи, я устанавливаю следующее:

'hierarchical'   => true,
'supports'       => array( 'title','author', 'page-attributes' ),

Таким образом, я предполагаю увидеть 'порядок', 'шаблоны', 'родительские элементы' в блоке Атрибутов при создании новой записи. Однако выпадающий список 'шаблонов' не отображается. Что еще нужно сделать, чтобы включить выбор 'шаблонов'?

0
Все ответы на вопрос 4
3
23

Начиная с WordPress 4.7 пользовательские шаблоны стали доступны и для произвольных типов записей. При определении шаблона, после имени шаблона добавьте строку (где 'product' — ваш пользовательский тип записи):

<?php
/*
Template Name: Мой пользовательский макет
Template Post Type: post, page, product
*/

// ваш код здесь

И не забудьте добавить 'page-attributes' при регистрации вашего пользовательского типа записи:

'supports' => array('title', 'page-attributes'),

чтобы отображалась метабокс "Атрибуты записи".

4 мая 2017 г. 11:45:19
Комментарии

Идеально! Именно то, что мне было нужно.

Marty McGee Marty McGee
11 дек. 2018 г. 01:17:21

Подробнее об этом здесь: https://make.wordpress.org/core/2016/11/03/post-type-templates-in-4-7/

Dvaeer Dvaeer
26 мая 2020 г. 14:01:38

Даже не знал об этом. Спасибо!

Keith Keith
6 июл. 2020 г. 14:11:01
3

Вы не можете применять шаблоны к пользовательским типам записей таким образом. Они будут отображаться только если тип записи 'page' (проверьте wp-admin/includes/meta-boxes.php на строке 568). Однако если вы хотите стилизовать все ваши пользовательские типы записей одинаково, но отличным от других типов записей способом, вы можете использовать single-[posttype].php -> http://codex.wordpress.org/images/1/18/Template_Hierarchy.png

1 дек. 2011 г. 06:30:16
Комментарии

Да, спасибо. Жаль, что у них до сих пор нет этой функции.

rpeg rpeg
6 февр. 2012 г. 02:18:30

Выпадающий список шаблонов всё ещё не поддерживается для пользовательских типов записей в версии 4.1?

supertrue supertrue
12 февр. 2015 г. 19:41:37

Кто-нибудь нашёл решение, как показать выбор атрибутов страницы / шаблона для ПОЛЬЗОВАТЕЛЬСКОГО ТИПА ЗАПИСИ??

Riffaz Starr Riffaz Starr
27 мар. 2015 г. 20:12:09
0

В моей теме я предоставляю "виртуальные" шаблоны. В моей теме нет конкретных файлов {template}.php, поэтому я отфильтровал ШАБЛОНЫ СТРАНИЦ следующим образом:

function my_virtual_templates( $templates ) {

    $my_virtual_templates = array(
        'virtual_template_id_1' => 'Шаблон 1',
        'virtual_template_id_2' => 'Шаблон 2',
        'virtual_template_id_3' => 'Шаблон 3'
    );

    // Объединяем с уже доступными шаблонами
    $templates = array_merge( $templates, $my_virtual_templates );

    return $templates;
}

add_filter( 'theme_page_templates', 'my_virtual_templates' );

Я искал "простой" способ добавить метабокс для записи в пользовательском типе записи (CPT), когда наткнулся на эту статью. Поскольку мой новый CPT будет использовать этот же массив "виртуальных" шаблонов, мне просто нужно было создать метабокс для записи.

Используя theme_{$post_type}_templates, он автоматически создает для меня этот раздел с метабоксом. Поэтому для моего CPT с названием my_cpt я добавил фильтр следующим образом:

add_filter( 'theme_my_cpt_templates', 'my_virtual_templates');

Теперь метабокс и селектор отображаются, и я даже могу изменять их на экране массового редактирования, так как это все встроено. Очень удобно!

31 авг. 2017 г. 00:45:48
0
-1

просто создайте любой файл шаблона и укажите в его заголовке следующее:

/*
Template Name: Название шаблона
Template Post Type: ваш_тип, page
*/

после этого в атрибутах записи появится выбор шаблона

23 окт. 2018 г. 14:31:57