Шаблон блока определяется как список элементов блока. Такие блоки могут иметь предопределенные атрибуты, заполнитель содержимого и быть статическими или динамическими. Шаблоны блоков позволяют указать начальное состояние по умолчанию для сеанса редактора.
В сферу шаблонов входят:
- Установка состояния по умолчанию динамически на клиенте. (как
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'
) ),
) ),
) )
);