Шаблоны

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

В сферу шаблонов входят:

  • Установка состояния по умолчанию динамически на клиенте. (как defaultBlock)
  • Зарегистрировано по умолчанию для данного типа сообщений.

Планируемые дополнения:

  • Сохраняется и присваивается страницам как «шаблоны страниц».
  • Определяется в template.phpфайле или извлекается из пользовательского типа записи ( wp_templates), специфичного для сайта.
  • Как эквивалент иерархии тем.

API

Шаблоны могут быть объявлены в JS или в PHP как массив blockTypes (имя блока и необязательные атрибуты).

const template = [
  [ 'block/name', {} ], // [ blockName, attributes ]
];
'template' => array(
    array( 'block/name' ),
),

Пользовательские типы сообщений

Пользовательский тип записи может зарегистрировать свой собственный шаблон во время регистрации:

function myplugin_register_book_post_type() {
    $args = array(
        'public' => true,
        'label'  => 'Books',
        'show_in_rest' => true,
        'template' => array(
            array( 'core/image', array(
                'align' => 'left',
            ) ),
            array( 'core/heading', array(
                'placeholder' => 'Add Author...',
            ) ),
            array( 'core/paragraph', array(
                'placeholder' => 'Add Description...',
            ) ),
        ),
    );
    register_post_type( 'book', $args );
}
add_action( 'init', 'myplugin_register_book_post_type' );

Locking

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

'template_lock' => 'all', // or 'insert' to allow moving

Опции:

  • all— предотвращает все операции. Невозможно вставить новые блоки, переместить существующие блоки или удалить блоки.
  • insert — предотвращает вставку или удаление блоков, но позволяет перемещать существующие блоки.

Существующие типы постов

Также можно назначить шаблон для существующего типа поста, такого как «посты» и «страницы»:

function my_add_template_to_posts() {
    $post_type_object = get_post_type_object( 'post' );
    $post_type_object->template = array(
        array( 'core/paragraph', array(
            'placeholder' => 'Add Description...',
        ) ),
    );
    $post_type_object->template_lock = 'all';
}
add_action( 'init', 'my_add_template_to_posts' );

Вложенные шаблоны

Контейнерные блоки, такие как блоки столбцов, также поддерживают шаблоны. Это достигается назначением вложенного шаблона блоку.

$template = array(
    array( 'core/paragraph', array(
        'placeholder' => 'Add a root-level paragraph',
    ) ),
    array( 'core/columns', array(), array(
        array( 'core/column', array(), array(
            array( 'core/image', array() ),
        ) ),
        array( 'core/column', array(), array(
            array( 'core/paragraph', array(
                'placeholder' => 'Add a inner paragraph'
            ) ),
        ) ),
    ) )
);
Scroll to top