wp_register_block_types_from_metadata_collection()WP 6.8.0

Регистрирует все типы блоков из коллекции метаданных.

Функция читает список блоков из PHP-манифеста и регистрирует каждый блок через register_block_type_from_metadata().

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

Коллекцию можно зарегистрировать этой же функцией, передав путь к манифесту. Если коллекция уже зарегистрирована через wp_register_block_metadata_collection(), параметр $manifest можно не передавать.

Функция не позволяет передавать отдельные аргументы регистрации для каждого блока. Если нужно указать, например, свой render_callback, зарегистрируйте коллекцию через wp_register_block_metadata_collection(), а блоки отдельно через register_block_type().

Хуков нет.

Возвращает

null.

  • null — ничего не возвращает. Результаты регистрации отдельных блоков не передаются вызывающему коду.

Использование

wp_register_block_types_from_metadata_collection( $path, $manifest );
$path(строка) (обязательный)

Абсолютный базовый путь к каталогу блоков коллекции. Внутри него должны находиться каталоги блоков, названия которых совпадают с ключами манифеста.

Если $manifest не передан, по этому пути должна быть заранее зарегистрирована коллекция метаданных.

$manifest(строка)

Абсолютный путь к PHP-файлу манифеста. Если указан, функция сначала регистрирует коллекцию метаданных.

Манифест должен возвращать массив вида идентификатор_блока => метаданные. Идентификатор указывается без пространства имён и должен совпадать с названием каталога блока.

По умолчанию: ''

Примеры

#1 Регистрация всех блоков из манифеста

Регистрируем на событии init все блоки, метаданные которых собраны в build/blocks-manifest.php:

Команда wp-scripts build-blocks-manifest собирает метаданные из каталога build и создаёт файл build/blocks-manifest.php.

add_action( 'init', 'my_plugin_register_blocks' );

function my_plugin_register_blocks() {
	wp_register_block_types_from_metadata_collection(
		__DIR__ . '/build',
		__DIR__ . '/build/blocks-manifest.php'
	);
}

Например, для двух блоков каталог сборки может выглядеть так:

build/
├── blocks-manifest.php
├── button/
│   └── block.json
└── notice/
	└── block.json

#2 Регистрация блоков из ранее зарегистрированной коллекции

Если коллекция уже зарегистрирована, параметр $manifest можно не передавать:

add_action( 'init', 'my_plugin_register_blocks' );

function my_plugin_register_blocks() {
	$build_path = __DIR__ . '/build';

	wp_register_block_metadata_collection(
		$build_path,
		$build_path . '/blocks-manifest.php'
	);

	wp_register_block_types_from_metadata_collection( $build_path );
}

Заметки

Список изменений

С версии 6.8.0 Введена.

Код wp_register_block_types_from_metadata_collection() WP 7.1

function wp_register_block_types_from_metadata_collection( $path, $manifest = '' ) {
	if ( $manifest ) {
		wp_register_block_metadata_collection( $path, $manifest );
	}

	$block_metadata_files = WP_Block_Metadata_Registry::get_collection_block_metadata_files( $path );
	foreach ( $block_metadata_files as $block_metadata_file ) {
		register_block_type_from_metadata( $block_metadata_file );
	}
}