WP_Theme_JSON::get_blocks_metadata() – Returns the metadata for each block.

You appear to be a bot. Output may be restricted

Description

Returns the metadata for each block.

Example:

  • {
  • 'core/paragraph': {
  • 'selector': 'p',
  • 'elements': {
  • 'link' => 'link selector',
  • 'etc' => 'element selector'
  • }
  • },
  • 'core/heading': {
  • 'selector': 'h1',
  • 'elements': {}
  • },
  • 'core/image': {
  • 'selector': '.wp-block-image',
  • 'duotone': 'img',
  • 'elements': {}
  • }
  • }

Usage

$array = WP_Theme_JSON::get_blocks_metadata();

Parameters

Returns

array Block metadata.

Source

File name: wordpress/wp-includes/class-wp-theme-json.php
Lines:

1 to 41 of 41
  protected static function get_blocks_metadata() {
    if ( null !== static::$blocks_metadata ) {
      return static::$blocks_metadata;
    }

    static::$blocks_metadata = array();

    $registry = WP_Block_Type_Registry::WP_Block_Type_Registry::get_instance();
    $blocks   = $registry->get_all_registered();
    foreach ( $blocks as $block_name => $block_type ) {
      if (
        isset( $block_type->supports['__experimentalSelector'] ) &&
        is_string( $block_type->supports['__experimentalSelector'] )
      ) {
        static::$blocks_metadata[ $block_name ]['selector'] = $block_type->supports['__experimentalSelector'];
      } else {
        static::$blocks_metadata[ $block_name ]['selector'] = '.wp-block-' . str_replace( '/', '-', str_replace( 'core/', '', $block_name ) );
      }

      if (
        isset( $block_type->supports['color']['__experimentalDuotone'] ) &&
        is_string( $block_type->supports['color']['__experimentalDuotone'] )
      ) {
        static::$blocks_metadata[ $block_name ]['duotone'] = $block_type->supports['color']['__experimentalDuotone'];
      }

      // Assign defaults, then overwrite those that the block sets by itself.
      // If the block selector is compounded, will append the element to each
      // individual block selector.
      $block_selectors = explode( ',', static::$blocks_metadata[ $block_name ]['selector'] );
      foreach ( static::ELEMENTS as $el_name => $el_selector ) {
        $element_selector = array();
        foreach ( $block_selectors as $selector ) {
          $element_selector[] = $selector . ' ' . $el_selector;
        }
        static::$blocks_metadata[ $block_name ]['elements'][ $el_name ] = implode( ',', $element_selector );
      }
    }

    return static::$blocks_metadata;
  }
 

 View on GitHub View on Trac