Skip to content

Commit

Permalink
Editor: Fix render_duotone_support() to be compatible with enhanced p…
Browse files Browse the repository at this point in the history
…agination.

Some blocks do not have content. For duotone support, blocks without content still need to run through the `render_duotone_support()` to render their duotone CSS.

This fix makes the duotone compatible with the enhanced pagination (introduced in 6.4.0) by making sure that the CSS is always on the page, even when the posts have no featured image. It also prevents the duotone from interfering with other blocks using `wp_unique_id()`.


References:
* [WordPress/gutenberg#55415 Gutenberg PR 55415]

Follow-up to [56226].

Props cbravobernal, luisherranz, hellofromTonya, isabel_brison, jorbin.
Fixes #59694.

git-svn-id: https://develop.svn.wordpress.org/trunk@56991 602fd350-edb4-49c9-b593-d223f7449a82
  • Loading branch information
hellofromtonya committed Oct 23, 2023
1 parent 51ae4e6 commit ee63155
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/wp-includes/class-wp-duotone.php
Original file line number Diff line number Diff line change
Expand Up @@ -1074,7 +1074,7 @@ private static function get_all_global_style_block_names() {
* @return string Filtered block content.
*/
public static function render_duotone_support( $block_content, $block, $wp_block ) {
if ( empty( $block_content ) || ! $block['blockName'] ) {
if ( ! $block['blockName'] ) {
return $block_content;
}
$duotone_selector = self::get_selector( $wp_block->block_type );
Expand Down
27 changes: 27 additions & 0 deletions tests/phpunit/tests/block-supports/duotone.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,33 @@ public function data_get_slug_from_attribute() {
);
}

/**
* Tests whether the CSS declarations are generated even if the block content is
* empty. This is needed to make the CSS output stable across paginations for
* features like the enhanced pagination of the Query block.
*
* @ticket 59694
*
* @covers ::render_duotone_support
*/
public function test_css_declarations_are_generated_even_with_empty_block_content() {
$block = array(
'blockName' => 'core/image',
'attrs' => array( 'style' => array( 'color' => array( 'duotone' => 'var:preset|duotone|blue-orange' ) ) ),
);
$wp_block = new WP_Block( $block );
$block_css_declarations_property = new ReflectionProperty( 'WP_Duotone', 'block_css_declarations' );
$block_css_declarations_property->setAccessible( true );
$block_css_declarations_property->setValue( $wp_block, array() );

WP_Duotone::render_duotone_support( '', $block, $wp_block );
$actual = $block_css_declarations_property->getValue();
// Reset the property's visibility.
$block_css_declarations_property->setAccessible( false );

$this->assertNotEmpty( $actual );
}

/**
* @dataProvider data_is_preset
*/
Expand Down

0 comments on commit ee63155

Please sign in to comment.