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-context.php

    r58594 r61020  
    523523                $this->assertSame( 'some-id-1', $p->get_attribute( 'id' ) );
    524524        }
     525
     526        /**
     527         * Tests supports multiple context directives in the same element.
     528         *
     529         * @ticket 64106
     530         *
     531         * @covers ::process_directives
     532         */
     533        public function test_wp_context_supports_multiple_directives_in_the_same_element() {
     534                $html    = '
     535                        <div
     536                                data-wp-interactive="directive-context/multiple"
     537                                data-wp-context=\'{ "prop": "parent", "parent": true }\'
     538                        >
     539                                <div
     540                                        data-wp-context---id2=\'other-namespace::{ "prop": true }\'
     541                                        data-wp-context=\'{ "prop": "default", "default": true }\'
     542                                        data-wp-context---id1=\'{ "prop": "id1", "id1": true }\'
     543                                >
     544                                        <span
     545                                                class="test"
     546                                                data-wp-bind--data-test-prop="context.prop"
     547                                                data-wp-bind--data-test-parent="context.parent"
     548                                                data-wp-bind--data-test-default="context.default"
     549                                                data-wp-bind--data-test-id1="context.id1"
     550                                                data-wp-bind--data-test-other="other-namespace::context.prop"
     551                                        ></span>
     552                                </div>
     553                        </div>
     554                ';
     555                list($p) = $this->process_directives( $html );
     556                $this->assertSame( 'id1', $p->get_attribute( 'data-test-prop' ) );
     557                foreach ( array( 'parent', 'default', 'id1', 'other' ) as $attribute ) {
     558                        $attr_name = "data-test-$attribute";
     559                        $this->assertSame(
     560                                'true',
     561                                $p->get_attribute( $attr_name ),
     562                                "Failed asserting that $attr_name equals 'true'"
     563                        );
     564                }
     565        }
    525566}
Note: See TracChangeset for help on using the changeset viewer.