Make WordPress Core


Ignore:
Timestamp:
10/21/2025 12:07:16 PM (11 months ago)
Author:
luisherranz
Message:

Interactivity API: Support unique IDs in server-side directives processing.

Server-side logic to support unique IDs in the Interactivity API directives to match what the client is doing (https://github.com/WordPress/gutenberg/pull/72161).

Props santosguillamot, darerodz, luisherranz.
Fixes #64106.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/interactivity-api/wpInteractivityAPI-wp-each.php

    r60953 r61020  
    581581         *
    582582         * @covers ::process_directives
    583          *
    584          * @expectedIncorrectUsage WP_Interactivity_API::_process_directives
    585583         */
    586584        public function test_wp_each_unbalanced_tags() {
     
    601599         *
    602600         * @covers ::process_directives
    603          *
    604          * @expectedIncorrectUsage WP_Interactivity_API::_process_directives
    605601         */
    606602        public function test_wp_each_unbalanced_tags_in_nested_template_tags() {
     
    685681                $this->assertSame( $expected, $new );
    686682        }
     683
     684        /**
     685         * Tests it doesn't support multiple directives.
     686         *
     687         * @ticket 64106
     688         *
     689         * @covers ::process_directives
     690         */
     691        public function test_wp_each_doesnt_support_multiple_directives() {
     692                $original = '' .
     693                        '<div data-wp-interactive="directive-each">' .
     694                                '<template data-wp-each="myPlugin::state.list" data-wp-each--item="myPlugin::state.list">' .
     695                                        '<span data-wp-text="myPlugin::context.item"></span>' .
     696                                '</template>' .
     697                                '<template data-wp-each---unique-id="myPlugin::state.list">' .
     698                                        '<span data-wp-text="myPlugin::context.item"></span>' .
     699                                '</template>' .
     700                                '<div data-wp-bind--id="myPlugin::state.after">Text</div>' .
     701                        '</div>';
     702                $expected = '' .
     703                        '<div data-wp-interactive="directive-each">' .
     704                                '<template data-wp-each="myPlugin::state.list" data-wp-each--item="myPlugin::state.list">' .
     705                                        '<span data-wp-text="myPlugin::context.item"></span>' .
     706                                '</template>' .
     707                                '<template data-wp-each---unique-id="myPlugin::state.list">' .
     708                                        '<span data-wp-text="myPlugin::context.item"></span>' .
     709                                '</template>' .
     710                                '<div id="after-wp-each" data-wp-bind--id="myPlugin::state.after">Text</div>' .
     711                        '</div>';
     712                $new      = $this->interactivity->process_directives( $original );
     713                $this->assertSame( $expected, $new );
     714        }
    687715}
Note: See TracChangeset for help on using the changeset viewer.