wp_register_block_metadata_collection()
Регистрирует коллекцию метаданных блоков из общего PHP-манифеста.
WordPress получает метаданные всех блоков коллекции из одного файла. Это сокращает количество обращений к файловой системе и исключает отдельный разбор каждого файла block.json.
Манифест должен возвращать ассоциативный массив. Ключ каждого элемента содержит идентификатор блока без пространства имён и должен совпадать с названием каталога блока.
Функция регистрирует только коллекцию метаданных, но не сами блоки. После неё каждый блок нужно зарегистрировать через register_block_type() или register_block_type_from_metadata().
Для одновременной регистрации коллекции и всех входящих в неё блоков используйте wp_register_block_types_from_metadata_collection().
Хуков нет.
Возвращает
null.
null— ничего не возвращает. Результат регистрации внутреннего метода не передаётся вызывающему коду.
Использование
wp_register_block_metadata_collection( $path, $manifest );
- $path(строка) (обязательный)
Абсолютный путь к базовому каталогу, в котором находятся каталоги блоков коллекции.
Путь нормализуется, завершающий слеш удаляется.
Нельзя указывать корневые каталоги
wp-includes, плагинов, обязательных плагинов или тем, а также их родительские каталоги. Можно указать вложенный каталог конкретного плагина или темы.- $manifest(строка) (обязательный)
Абсолютный путь к PHP-файлу манифеста.
Файл должен возвращать массив вида
идентификатор_блока => метаданные. Идентификатор указывается без пространства имён и должен совпадать с названием каталога блока.Если файл не существует, коллекция не регистрируется и WordPress создаёт уведомление о неправильном использовании функции.
Примеры
#1 Регистрация коллекции и отдельных блоков
Файл blocks-manifest.php можно создать командой:
wp-scripts build-blocks-manifest
По умолчанию команда собирает метаданные из каталога build и создаёт файл build/blocks-manifest.php.
function my_plugin_register_blocks() {
$build_path = __DIR__ . '/build';
wp_register_block_metadata_collection(
$build_path,
$build_path . '/blocks-manifest.php'
);
register_block_type( $build_path . '/notice' );
register_block_type(
$build_path . '/button',
[
'render_callback' => 'my_plugin_render_button_block',
]
);
}
add_action( 'init', 'my_plugin_register_blocks' );
Пример структуры каталогов:
build/ ├── blocks-manifest.php ├── button/ │ └── block.json └── notice/ └── block.json
Манифест имеет следующую структуру:
<?php return [ 'button' => [ 'name' => 'my-plugin/button', 'title' => 'Button', ], 'notice' => [ 'name' => 'my-plugin/notice', 'title' => 'Notice', ], ];
Список изменений
| С версии 6.7.0 | Введена. |
Код wp_register_block_metadata_collection() wp register block metadata collection WP 7.1
function wp_register_block_metadata_collection( $path, $manifest ) {
WP_Block_Metadata_Registry::register_collection( $path, $manifest );
}