WP_Block_Metadata_Registry::register_collection()
Registers a block metadata collection.
This method allows registering a collection of block metadata from a single manifest file, improving performance for large sets of blocks.
The manifest file should be a PHP file that returns an associative array, where the keys are the block identifiers (without their namespace) and the values are the corresponding block metadata arrays. The block identifiers must match the parent directory name for the respective block.json file.
Example manifest file structure:
return array( 'example-block' => array( 'title' => 'Example Block', 'category' => 'widgets', 'icon' => 'smiley', // ... other block metadata ), 'another-block' => array( 'title' => 'Another Block', 'category' => 'formatting', 'icon' => 'star-filled', // ... other block metadata ), // ... more block metadata entries );
Метод класса: WP_Block_Metadata_Registry{}
Хуков нет.
Возвращает
true|false
. True if the collection was registered successfully, false otherwise.
Использование
$result = WP_Block_Metadata_Registry::register_collection( $path, $manifest );
- $path(строка) (обязательный)
- The absolute base path for the collection ( e.g., WP_PLUGIN_DIR . '/my-plugin/blocks/' ).
- $manifest(строка) (обязательный)
- The absolute path to the manifest file containing the metadata collection.
Список изменений
С версии 6.7.0 | Введена. |
Код WP_Block_Metadata_Registry::register_collection() WP Block Metadata Registry::register collection WP 6.7.1
public static function register_collection( $path, $manifest ) { $path = wp_normalize_path( rtrim( $path, '/' ) ); $wpinc_dir = self::get_wpinc_dir(); $plugin_dir = self::get_plugin_dir(); // Check if the path is valid: if ( str_starts_with( $path, $plugin_dir ) ) { // For plugins, ensure the path is within a specific plugin directory and not the base plugin directory. $relative_path = substr( $path, strlen( $plugin_dir ) + 1 ); $plugin_name = strtok( $relative_path, '/' ); if ( empty( $plugin_name ) || $plugin_name === $relative_path ) { _doing_it_wrong( __METHOD__, __( 'Block metadata collections can only be registered for a specific plugin. The provided path is neither a core path nor a valid plugin path.' ), '6.7.0' ); return false; } } elseif ( ! str_starts_with( $path, $wpinc_dir ) ) { // If it's neither a plugin directory path nor within 'wp-includes', the path is invalid. _doing_it_wrong( __METHOD__, __( 'Block metadata collections can only be registered for a specific plugin. The provided path is neither a core path nor a valid plugin path.' ), '6.7.0' ); return false; } if ( ! file_exists( $manifest ) ) { _doing_it_wrong( __METHOD__, __( 'The specified manifest file does not exist.' ), '6.7.0' ); return false; } self::$collections[ $path ] = array( 'manifest' => $manifest, 'metadata' => null, ); return true; }