PluginProbe
Gutenberg / 22.9.0
Gutenberg v22.9.0
23.9.1 23.9.0 23.8.0 23.7.2 23.7.1 23.7.0 23.6.1 23.6.2 23.6.0 23.5.3 23.5.2 23.5.1 23.5.0 23.4.0 23.3.2 23.3.1 23.3.0 23.2.0 23.2.1 23.2.2 23.1.1 23.1.0 23.0.1 12.6.0 7.4.0 All 402 releases
gutenberg / build / scripts / widgets / blocks / widget-group.php

widget-group.php in Gutenberg 22.9.0, at build/scripts/widgets/blocks/widget-group.php

94 lines 2.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Server-side rendering of the `core/widget-group` block.
4 *
5 * @package WordPress
6 */
7
8 /**
9 * Renders the 'core/widget-group' block.
10 *
11 * @since 5.9.0
12 *
13 * @global array $wp_registered_sidebars
14 * @global int|string $_sidebar_being_rendered
15 *
16 * @param array $attributes The block attributes.
17 * @param string $content The block content.
18 * @param WP_Block $block The block.
19 *
20 * @return string Rendered block.
21 */
22 function gutenberg_render_block_core_widget_group( $attributes, $content, $block ) {
23 global $wp_registered_sidebars, $_sidebar_being_rendered;
24
25 if ( isset( $wp_registered_sidebars[ $_sidebar_being_rendered ] ) ) {
26 $before_title = $wp_registered_sidebars[ $_sidebar_being_rendered ]['before_title'];
27 $after_title = $wp_registered_sidebars[ $_sidebar_being_rendered ]['after_title'];
28 } else {
29 $before_title = '<h2 class="widget-title">';
30 $after_title = '</h2>';
31 }
32
33 $html = '';
34
35 if ( ! empty( $attributes['title'] ) ) {
36 $html .= $before_title . esc_html( $attributes['title'] ) . $after_title;
37 }
38
39 $html .= '<div class="wp-widget-group__inner-blocks">';
40 foreach ( $block->inner_blocks as $inner_block ) {
41 $html .= $inner_block->render();
42 }
43 $html .= '</div>';
44
45 return $html;
46 }
47
48 /**
49 * Registers the 'core/widget-group' block.
50 *
51 * @since 5.9.0
52 */
53 function gutenberg_register_block_core_widget_group() {
54 register_block_type_from_metadata(
55 __DIR__ . '/widget-group',
56 array(
57 'render_callback' => 'gutenberg_render_block_core_widget_group',
58 )
59 );
60 }
61
62 add_action( 'init', 'gutenberg_register_block_core_widget_group', 20 );
63
64 /**
65 * Make a note of the sidebar being rendered before WordPress starts rendering
66 * it. This lets us get to the current sidebar in
67 * gutenberg_render_block_core_widget_group().
68 *
69 * @since 5.9.0
70 *
71 * @global int|string $_sidebar_being_rendered
72 *
73 * @param int|string $index Index, name, or ID of the dynamic sidebar.
74 */
75 function gutenberg_note_sidebar_being_rendered( $index ) {
76 global $_sidebar_being_rendered;
77 $_sidebar_being_rendered = $index;
78 }
79 add_action( 'dynamic_sidebar_before', 'gutenberg_note_sidebar_being_rendered' );
80
81 /**
82 * Clear whatever we set in gutenberg_note_sidebar_being_rendered() after WordPress
83 * finishes rendering a sidebar.
84 *
85 * @since 5.9.0
86 *
87 * @global int|string $_sidebar_being_rendered
88 */
89 function gutenberg_discard_sidebar_being_rendered() {
90 global $_sidebar_being_rendered;
91 unset( $_sidebar_being_rendered );
92 }
93 add_action( 'dynamic_sidebar_after', 'gutenberg_discard_sidebar_being_rendered' );
94