Make WordPress Core


Ignore:
Timestamp:
10/21/2025 12:07:16 PM (4 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.