WP_Widget_Block::get_dynamic_classname() – Calculates the classname to use in the block widget’s container HTML.

You appear to be a bot. Output may be restricted

Description

Calculates the classname to use in the block widget's container HTML.

Usually this is set to $this->widget_options['classname'] by dynamic_sidebar(). In this case, however, we want to set the classname dynamically depending on the block contained by this block widget. If a block widget contains a block that has an equivalent legacy widget, we display that legacy widget's class name. This helps with theme backwards compatibility.

Usage

$string = WP_Widget_Block::get_dynamic_classname( $content );

Parameters

$content
( string ) required – The HTML content of the current block widget.

Returns

string The classname to use in the block widget's container HTML.

Source

File name: wordpress/wp-includes/widgets/class-wp-widget-block.php
Lines:

1 to 66 of 66
  private function get_dynamic_classname( $content ) {
    $blocks = parse_blocks( $content );

    $block_name = isset( $blocks[0] ) ? $blocks[0]['blockName'] : null;

    switch ( $block_name ) {
      case 'core/paragraph':
        $classname = 'widget_block widget_text';
        break;
      case 'core/calendar':
        $classname = 'widget_block widget_calendar';
        break;
      case 'core/search':
        $classname = 'widget_block widget_search';
        break;
      case 'core/html':
        $classname = 'widget_block widget_custom_html';
        break;
      case 'core/archives':
        $classname = 'widget_block widget_archive';
        break;
      case 'core/latest-posts':
        $classname = 'widget_block widget_recent_entries';
        break;
      case 'core/latest-comments':
        $classname = 'widget_block widget_recent_comments';
        break;
      case 'core/tag-cloud':
        $classname = 'widget_block widget_tag_cloud';
        break;
      case 'core/categories':
        $classname = 'widget_block widget_categories';
        break;
      case 'core/audio':
        $classname = 'widget_block widget_media_audio';
        break;
      case 'core/video':
        $classname = 'widget_block widget_media_video';
        break;
      case 'core/image':
        $classname = 'widget_block widget_media_image';
        break;
      case 'core/gallery':
        $classname = 'widget_block widget_media_gallery';
        break;
      case 'core/rss':
        $classname = 'widget_block widget_rss';
        break;
      default:
        $classname = 'widget_block';
    }

    
/**
 * The classname used in the block widget's container HTML.
 *
 * This can be set according to the name of the block contained by the block widget.
 *
 * @since 5.8.0
 *
 * @param string $classname  The classname to be used in the block widget's container HTML,
 *                           e.g. 'widget_block widget_text'.
 * @param string $block_name The name of the block contained by the block widget,
 *                           e.g. 'core/paragraph'.
 */
    return apply_filters( 'widget_block_dynamic_classname', $classname, $block_name );
  }
 

 View on GitHub View on Trac