WordPress/wp-includes/blocks/widget-group.php

94 lines
2.4 KiB
PHP
Raw Normal View History

<?php
/**
* Server-side rendering of the `core/widget-group` block.
*
* @package WordPress
*/
/**
* Renders the 'core/widget-group' block.
*
* @since 5.9.0
*
* @global array $wp_registered_sidebars
* @global int|string $_sidebar_being_rendered
*
* @param array $attributes The block attributes.
* @param string $content The block content.
* @param WP_Block $block The block.
*
* @return string Rendered block.
*/
function render_block_core_widget_group( $attributes, $content, $block ) {
global $wp_registered_sidebars, $_sidebar_being_rendered;
if ( isset( $wp_registered_sidebars[ $_sidebar_being_rendered ] ) ) {
$before_title = $wp_registered_sidebars[ $_sidebar_being_rendered ]['before_title'];
$after_title = $wp_registered_sidebars[ $_sidebar_being_rendered ]['after_title'];
} else {
$before_title = '<h2 class="widget-title">';
$after_title = '</h2>';
}
$html = '';
if ( ! empty( $attributes['title'] ) ) {
Editor: Update packages for 6.1 Release Candidate 2. Package updates for bug and regression fixes: - `@wordpress/block-directory: 3.15.8` - `@wordpress/block-editor: 10.0.7` - `@wordpress/block-library: 7.14.8` - `@wordpress/components: 21.0.6` - `@wordpress/customize-widgets: 3.14.8` - `@wordpress/edit-post: 6.14.8` - `@wordpress/edit-site: 4.14.10` - `@wordpress/edit-widgets: 4.14.8` - `@wordpress/editor: 12.16.7` - `@wordpress/format-library: 3.15.7` - `@wordpress/interface: 4.16.6` - `@wordpress/list-reusable-blocks: 3.15.6` - `@wordpress/nux: 5.15.6` - `@wordpress/preferences: 2.9.6` - `@wordpress/reusable-blocks: 3.15.7` - `@wordpress/server-side-render: 3.15.6` - `@wordpress/widgets: 2.15.7` Original PRs from Gutenberg repository: - [https://github.com/WordPress/gutenberg/pull/45041 #45041 Font Size Picker Hint: Fallback to font size `slug` if `name` is undefined] - [https://github.com/WordPress/gutenberg/pull/45045 #45045 Add: Missing output escaping on some blocks] - [https://github.com/WordPress/gutenberg/pull/44999 #44999 Escape comment author URL] - [https://github.com/WordPress/gutenberg/pull/44972 #44972 Navigator: restore focus only once per location] - [https://github.com/WordPress/gutenberg/pull/44858 #44858 Spacing Sizes Control: Try improving layout spacing] - [https://github.com/WordPress/gutenberg/pull/44878 #44878 Fix: Inspector is usable on the top level block even if it is content locked] - [https://github.com/WordPress/gutenberg/pull/44809 #44809 Fix list outdents on Enter in quote block] - [https://github.com/WordPress/gutenberg/pull/44864 #44864 List v2: fix selection when creating paragraph from empty list item] - [https://github.com/WordPress/gutenberg/pull/44853 #44853 Fix overflowing patterns] - [https://github.com/WordPress/gutenberg/pull/45050 #45050 Fix visibility of nested Group block appender] - [https://github.com/WordPress/gutenberg/pull/44887 #44887 wp-env: Use case insensitive regex when checking WP version string] Follow-up to [54257], [54335], [54383], [54483], [54486], [54490]. Props bernhard-reiter, audrasjb. See #56467. Built from https://develop.svn.wordpress.org/trunk@54632 git-svn-id: http://core.svn.wordpress.org/trunk@54184 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2022-10-18 15:56:02 +02:00
$html .= $before_title . esc_html( $attributes['title'] ) . $after_title;
}
$html .= '<div class="wp-widget-group__inner-blocks">';
foreach ( $block->inner_blocks as $inner_block ) {
$html .= $inner_block->render();
}
$html .= '</div>';
return $html;
}
/**
* Registers the 'core/widget-group' block.
*
* @since 5.9.0
*/
function register_block_core_widget_group() {
register_block_type_from_metadata(
__DIR__ . '/widget-group',
array(
'render_callback' => 'render_block_core_widget_group',
)
);
}
add_action( 'init', 'register_block_core_widget_group' );
/**
* Make a note of the sidebar being rendered before WordPress starts rendering
* it. This lets us get to the current sidebar in
* render_block_core_widget_group().
*
* @since 5.9.0
*
* @global int|string $_sidebar_being_rendered
*
* @param int|string $index Index, name, or ID of the dynamic sidebar.
*/
function note_sidebar_being_rendered( $index ) {
global $_sidebar_being_rendered;
$_sidebar_being_rendered = $index;
}
add_action( 'dynamic_sidebar_before', 'note_sidebar_being_rendered' );
/**
* Clear whatever we set in note_sidebar_being_rendered() after WordPress
* finishes rendering a sidebar.
*
* @since 5.9.0
*
* @global int|string $_sidebar_being_rendered
*/
function discard_sidebar_being_rendered() {
global $_sidebar_being_rendered;
unset( $_sidebar_being_rendered );
}
add_action( 'dynamic_sidebar_after', 'discard_sidebar_being_rendered' );