build/scripts/widgets/blocks
legacy-widget
10 months ago
widget-group
10 months ago
blocks-manifest.php
1.2 KB
7 months ago
legacy-widget.php
4.0 KB
10 months ago
widget-group.php
2.5 KB
10 months ago
widget-group.php in Gutenberg 23.2.0, at build/scripts/widgets/blocks/widget-group.php
| 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 |