From 69e0fe8a6b7eadb61518222bb31570b96501b623 Mon Sep 17 00:00:00 2001 From: gziolo Date: Tue, 19 Jan 2021 11:48:59 +0000 Subject: [PATCH] Blocks: Add automatic RTL handlind for block styles registered from metadata Related Gutenberg issue: https://github.com/WordPress/gutenberg/pull/28274 With this change it is going to be possible to use the same pattern that wp_style_add_data uses for RTL handling. If the block style file with "-rtl.css" is included in addition to the regular style referenced in "block.json" file then it is going to be automatically registered. Props swisspidy, aristath. See #52301. git-svn-id: https://develop.svn.wordpress.org/trunk@49982 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/blocks.php | 7 ++++++- tests/phpunit/data/blocks/notice/block-rtl.css | 1 + tests/phpunit/tests/blocks/register.php | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 tests/phpunit/data/blocks/notice/block-rtl.css diff --git a/src/wp-includes/blocks.php b/src/wp-includes/blocks.php index ace9811f32..9cfbfdb5dc 100644 --- a/src/wp-includes/blocks.php +++ b/src/wp-includes/blocks.php @@ -169,12 +169,17 @@ function register_block_style_handle( $metadata, $field_name ) { $style_handle = generate_block_asset_handle( $metadata['name'], $field_name ); $block_dir = dirname( $metadata['file'] ); + $style_file = realpath( "$block_dir/$style_path" ); $result = wp_register_style( $style_handle, plugins_url( $style_path, $metadata['file'] ), array(), - filemtime( realpath( "$block_dir/$style_path" ) ) + filemtime( $style_file ) ); + if ( file_exists( str_replace( '.css', '-rtl.css', $style_file ) ) ) { + wp_style_add_data( $style_handle, 'rtl', 'replace' ); + } + return $result ? $style_handle : false; } diff --git a/tests/phpunit/data/blocks/notice/block-rtl.css b/tests/phpunit/data/blocks/notice/block-rtl.css new file mode 100644 index 0000000000..2572f27aaf --- /dev/null +++ b/tests/phpunit/data/blocks/notice/block-rtl.css @@ -0,0 +1 @@ +/* Test CSS file - RTL version */ diff --git a/tests/phpunit/tests/blocks/register.php b/tests/phpunit/tests/blocks/register.php index 5ea58af398..1d6e845d6f 100644 --- a/tests/phpunit/tests/blocks/register.php +++ b/tests/phpunit/tests/blocks/register.php @@ -269,6 +269,7 @@ function test_success_register_block_style_handle() { $result = register_block_style_handle( $metadata, 'style' ); $this->assertSame( 'unit-tests-test-block-style', $result ); + $this->assertSame( 'replace', wp_styles()->get_data( 'unit-tests-test-block-style', 'rtl' ) ); } /**