Make WordPress Core

Changeset 58313


Ignore:
Timestamp:
06/04/2024 01:46:03 AM (2 years ago)
Author:
isabel_brison
Message:

Editor: fix duotone filter for aligned images on classic themes.

Adds a filter to move the duotone classname to the outer wrapper on aligned images.

Props scruffian, isabel_brison, ajlende.
Fixes #61271.

Location:
trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/block-supports/duotone.php

    r56226 r58313  
    4343// Add classnames to blocks using duotone support.
    4444add_filter( 'render_block', array( 'WP_Duotone', 'render_duotone_support' ), 10, 3 );
     45add_filter( 'render_block_core/image', array( 'WP_Duotone', 'restore_image_outer_container' ), 10, 1 );
    4546
    4647// Enqueue styles.
  • trunk/src/wp-includes/class-wp-duotone.php

    r58123 r58313  
    11561156
    11571157        /**
     1158         * Fixes the issue with our generated class name not being added to the block's outer container
     1159         * in classic themes due to gutenberg_restore_image_outer_container from layout block supports.
     1160         *
     1161         * @since 6.6.0
     1162         *
     1163         * @param  string $block_content Rendered block content.
     1164         * @return string                Filtered block content.
     1165         */
     1166        public static function restore_image_outer_container( $block_content ) {
     1167                if ( wp_theme_has_theme_json() ) {
     1168                        return $block_content;
     1169                }
     1170
     1171                $tags          = new WP_HTML_Tag_Processor( $block_content );
     1172                $wrapper_query = array(
     1173                        'tag_name'   => 'div',
     1174                        'class_name' => 'wp-block-image',
     1175                );
     1176                if ( ! $tags->next_tag( $wrapper_query ) ) {
     1177                        return $block_content;
     1178                }
     1179
     1180                $tags->set_bookmark( 'wrapper-div' );
     1181                $tags->next_tag();
     1182
     1183                $inner_classnames = explode( ' ', $tags->get_attribute( 'class' ) );
     1184                foreach ( $inner_classnames as $classname ) {
     1185                        if ( 0 === strpos( $classname, 'wp-duotone' ) ) {
     1186                                $tags->remove_class( $classname );
     1187                                $tags->seek( 'wrapper-div' );
     1188                                $tags->add_class( $classname );
     1189                                break;
     1190                        }
     1191                }
     1192
     1193                return $tags->get_updated_html();
     1194        }
     1195
     1196        /**
    11581197         * Appends the used block duotone filter declarations to the inline block supports CSS.
    11591198         *
  • trunk/src/wp-settings.php

    r58304 r58313  
    368368require ABSPATH . WPINC . '/block-supports/utils.php';
    369369require ABSPATH . WPINC . '/block-supports/align.php';
    370 require ABSPATH . WPINC . '/block-supports/background.php';
    371 require ABSPATH . WPINC . '/block-supports/block-style-variations.php';
     370require ABSPATH . WPINC . '/block-supports/custom-classname.php';
     371require ABSPATH . WPINC . '/block-supports/generated-classname.php';
     372require ABSPATH . WPINC . '/block-supports/settings.php';
     373require ABSPATH . WPINC . '/block-supports/elements.php';
     374require ABSPATH . WPINC . '/block-supports/colors.php';
     375require ABSPATH . WPINC . '/block-supports/typography.php';
    372376require ABSPATH . WPINC . '/block-supports/border.php';
    373 require ABSPATH . WPINC . '/block-supports/colors.php';
    374 require ABSPATH . WPINC . '/block-supports/custom-classname.php';
     377require ABSPATH . WPINC . '/block-supports/layout.php';
     378require ABSPATH . WPINC . '/block-supports/position.php';
     379require ABSPATH . WPINC . '/block-supports/spacing.php';
    375380require ABSPATH . WPINC . '/block-supports/dimensions.php';
    376381require ABSPATH . WPINC . '/block-supports/duotone.php';
    377382require ABSPATH . WPINC . '/block-supports/shadow.php';
    378 require ABSPATH . WPINC . '/block-supports/elements.php';
    379 require ABSPATH . WPINC . '/block-supports/generated-classname.php';
    380 require ABSPATH . WPINC . '/block-supports/layout.php';
    381 require ABSPATH . WPINC . '/block-supports/position.php';
    382 require ABSPATH . WPINC . '/block-supports/spacing.php';
    383 require ABSPATH . WPINC . '/block-supports/typography.php';
    384 require ABSPATH . WPINC . '/block-supports/settings.php';
     383require ABSPATH . WPINC . '/block-supports/background.php';
     384require ABSPATH . WPINC . '/block-supports/block-style-variations.php';
    385385require ABSPATH . WPINC . '/style-engine.php';
    386386require ABSPATH . WPINC . '/style-engine/class-wp-style-engine.php';
Note: See TracChangeset for help on using the changeset viewer.