45 lines
1.2 KiB
PHP
45 lines
1.2 KiB
PHP
<?php
|
|
/**
|
|
* Layout block support flag.
|
|
*
|
|
* @package WordPress
|
|
* @since 5.8.0
|
|
*/
|
|
|
|
/**
|
|
* For themes without theme.json file, make sure
|
|
* to restore the inner div for the group block
|
|
* to avoid breaking styles relying on that div.
|
|
*
|
|
* @since 5.8.0
|
|
* @access private
|
|
*
|
|
* @param string $block_content Rendered block content.
|
|
* @param array $block Block object.
|
|
*
|
|
* @return string Filtered block content.
|
|
*/
|
|
function wp_restore_group_inner_container( $block_content, $block ) {
|
|
$group_with_inner_container_regex = '/(^\s*<div\b[^>]*wp-block-group(\s|")[^>]*>)(\s*<div\b[^>]*wp-block-group__inner-container(\s|")[^>]*>)((.|\S|\s)*)/';
|
|
|
|
// TODO: Add check for theme.json presence.
|
|
if (
|
|
'core/group' !== $block['blockName'] ||
|
|
1 === preg_match( $group_with_inner_container_regex, $block_content )
|
|
) {
|
|
return $block_content;
|
|
}
|
|
|
|
$replace_regex = '/(^\s*<div\b[^>]*wp-block-group[^>]*>)(.*)(<\/div>\s*$)/ms';
|
|
$updated_content = preg_replace_callback(
|
|
$replace_regex,
|
|
function( $matches ) {
|
|
return $matches[1] . '<div class="wp-block-group__inner-container">' . $matches[2] . '</div>' . $matches[3];
|
|
},
|
|
$block_content
|
|
);
|
|
return $updated_content;
|
|
}
|
|
|
|
add_filter( 'render_block', 'wp_restore_group_inner_container', 10, 2 );
|