PluginProbe
Gutenberg / 12.1.0
Gutenberg v12.1.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 / widgets / blocks / widget-group.php

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

79 lines 2.2 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 * @param array $attributes The block attributes.
12 * @param string $content The block content.
13 * @param WP_Block $block The block.
14 *
15 * @return string Rendered block.
16 */
17 function gutenberg_render_block_core_widget_group( $attributes, $content, $block ) {
18 global $wp_registered_sidebars, $_sidebar_being_rendered;
19
20 if ( isset( $wp_registered_sidebars[ $_sidebar_being_rendered ] ) ) {
21 $before_title = $wp_registered_sidebars[ $_sidebar_being_rendered ]['before_title'];
22 $after_title = $wp_registered_sidebars[ $_sidebar_being_rendered ]['after_title'];
23 } else {
24 $before_title = '<h2 class="widget-title">';
25 $after_title = '</h2>';
26 }
27
28 $html = '';
29
30 if ( ! empty( $attributes['title'] ) ) {
31 $html .= $before_title . $attributes['title'] . $after_title;
32 }
33
34 $html .= '<div class="wp-widget-group__inner-blocks">';
35 foreach ( $block->inner_blocks as $inner_block ) {
36 $html .= $inner_block->render();
37 }
38 $html .= '</div>';
39
40 return $html;
41 }
42
43 /**
44 * Registers the 'core/widget-group' block.
45 */
46 function gutenberg_register_block_core_widget_group() {
47 register_block_type_from_metadata(
48 __DIR__ . '/widget-group',
49 array(
50 'render_callback' => 'gutenberg_render_block_core_widget_group',
51 )
52 );
53 }
54
55 add_action( 'init', 'gutenberg_register_block_core_widget_group', 20 );
56
57 /**
58 * Make a note of the sidebar being rendered before WordPress starts rendering
59 * it. This lets us get to the current sidebar in
60 * gutenberg_render_block_core_widget_group().
61 *
62 * @param int|string $index Index, name, or ID of the dynamic sidebar.
63 */
64 function gutenberg_note_sidebar_being_rendered( $index ) {
65 global $_sidebar_being_rendered;
66 $_sidebar_being_rendered = $index;
67 }
68 add_action( 'dynamic_sidebar_before', 'gutenberg_note_sidebar_being_rendered' );
69
70 /**
71 * Clear whatever we set in gutenberg_note_sidebar_being_rendered() after WordPress
72 * finishes rendering a sidebar.
73 */
74 function gutenberg_discard_sidebar_being_rendered() {
75 global $_sidebar_being_rendered;
76 unset( $_sidebar_being_rendered );
77 }
78 add_action( 'dynamic_sidebar_after', 'gutenberg_discard_sidebar_being_rendered' );
79