wp_register_block_metadata_collection()WP 6.7.0

Регистрирует коллекцию метаданных блоков из общего PHP-манифеста.

WordPress получает метаданные всех блоков коллекции из одного файла. Это сокращает количество обращений к файловой системе и исключает отдельный разбор каждого файла block.json.

Манифест должен возвращать ассоциативный массив. Ключ каждого элемента содержит идентификатор блока без пространства имён и должен совпадать с названием каталога блока.

Функция регистрирует только коллекцию метаданных, но не сами блоки. После неё каждый блок нужно зарегистрировать через register_block_type() или register_block_type_from_metadata().

Для одновременной регистрации коллекции и всех входящих в неё блоков используйте wp_register_block_types_from_metadata_collection().

Работает на основе: WP_Block_Metadata_Registry::register_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 7.1

function wp_register_block_metadata_collection( $path, $manifest ) {
	WP_Block_Metadata_Registry::register_collection( $path, $manifest );
}