wp_register_block_types_from_metadata_collection()
Регистрирует все типы блоков из коллекции метаданных.
Функция читает список блоков из 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 );
}Заметки
- Смотрите: wp_register_block_metadata_collection()
- Смотрите: register_block_type_from_metadata()
Список изменений
| С версии 6.8.0 | Введена. |
Код wp_register_block_types_from_metadata_collection() 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 );
}
}