Skip to content

Commit bbe8791

Browse files
committed
Set the value of all data-wp-each-child to the top most data-wp-each element
1 parent 8985e10 commit bbe8791

File tree

2 files changed

+18
-20
lines changed

2 files changed

+18
-20
lines changed

src/wp-includes/interactivity-api/class-wp-interactivity-api.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,13 +1272,11 @@ private function data_wp_each_processor( WP_Interactivity_API_Directives_Process
12721272
*
12731273
* Nested `data-wp-each` directives could render
12741274
* `data-wp-each-child` elements at the top level as well, and
1275-
* they should be ignored.
1275+
* they should be overwritten.
12761276
*/
12771277
$i = new WP_Interactivity_API_Directives_Processor( $processed_item );
12781278
while ( $i->next_tag() ) {
1279-
if ( ! $i->get_attribute( 'data-wp-each-child' ) ) {
1280-
$i->set_attribute( 'data-wp-each-child', $namespace_value . '::' . $path );
1281-
}
1279+
$i->set_attribute( 'data-wp-each-child', $namespace_value . '::' . $path );
12821280
$i->next_balanced_tag_closer_tag();
12831281
}
12841282
$processed_content .= $i->get_updated_html();

tests/phpunit/tests/interactivity-api/wpInteractivityAPI-wp-each.php

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -477,14 +477,14 @@ public function test_wp_each_nested_template_tags() {
477477
'<template data-wp-each-child="myPlugin::state.list" data-wp-each--item2="myPlugin::state.list2">' .
478478
'<span data-wp-text="myPlugin::context.item2"></span>' .
479479
'</template>' .
480-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item2">3</span>' .
481-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item2">4</span>' .
480+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item2">3</span>' .
481+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item2">4</span>' .
482482
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item1">2</span>' .
483483
'<template data-wp-each-child="myPlugin::state.list" data-wp-each--item2="myPlugin::state.list2">' .
484484
'<span data-wp-text="myPlugin::context.item2"></span>' .
485485
'</template>' .
486-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item2">3</span>' .
487-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item2">4</span>' .
486+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item2">3</span>' .
487+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item2">4</span>' .
488488
'<div id="after-wp-each" data-wp-bind--id="myPlugin::state.after">Text</div>';
489489
$new = $this->interactivity->process_directives( $original );
490490
$this->assertSame( $expected, $new );
@@ -519,18 +519,18 @@ public function test_wp_each_directly_nested_template_tags() {
519519
'<span data-wp-text="myPlugin::context.item1"></span>' .
520520
'<span data-wp-text="myPlugin::context.item2"></span>' .
521521
'</template>' .
522-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item1">1</span>' .
523-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item2">3</span>' .
524-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item1">1</span>' .
525-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item2">4</span>' .
522+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item1">1</span>' .
523+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item2">3</span>' .
524+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item1">1</span>' .
525+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item2">4</span>' .
526526
'<template data-wp-each-child="myPlugin::state.list" data-wp-each--item2="myPlugin::state.list2">' .
527527
'<span data-wp-text="myPlugin::context.item1"></span>' .
528528
'<span data-wp-text="myPlugin::context.item2"></span>' .
529529
'</template>' .
530-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item1">2</span>' .
531-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item2">3</span>' .
532-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item1">2</span>' .
533-
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.item2">4</span>' .
530+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item1">2</span>' .
531+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item2">3</span>' .
532+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item1">2</span>' .
533+
'<span data-wp-each-child="myPlugin::state.list" data-wp-text="myPlugin::context.item2">4</span>' .
534534
'<div id="after-wp-each" data-wp-bind--id="myPlugin::state.after">Text</div>';
535535
$new = $this->interactivity->process_directives( $original );
536536
$this->assertSame( $expected, $new );
@@ -562,13 +562,13 @@ public function test_wp_each_nested_template_tags_using_previous_item_as_list()
562562
'<template data-wp-each-child="myPlugin::state.list2" data-wp-each--number="myPlugin::context.list">' .
563563
'<span data-wp-text="myPlugin::context.number"></span>' .
564564
'</template>' .
565-
'<span data-wp-each-child="myPlugin::context.list" data-wp-text="myPlugin::context.number">1</span>' .
566-
'<span data-wp-each-child="myPlugin::context.list" data-wp-text="myPlugin::context.number">2</span>' .
565+
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.number">1</span>' .
566+
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.number">2</span>' .
567567
'<template data-wp-each-child="myPlugin::state.list2" data-wp-each--number="myPlugin::context.list">' .
568568
'<span data-wp-text="myPlugin::context.number"></span>' .
569569
'</template>' .
570-
'<span data-wp-each-child="myPlugin::context.list" data-wp-text="myPlugin::context.number">3</span>' .
571-
'<span data-wp-each-child="myPlugin::context.list" data-wp-text="myPlugin::context.number">4</span>' .
570+
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.number">3</span>' .
571+
'<span data-wp-each-child="myPlugin::state.list2" data-wp-text="myPlugin::context.number">4</span>' .
572572
'<div id="after-wp-each" data-wp-bind--id="myPlugin::state.after">Text</div>';
573573
$new = $this->interactivity->process_directives( $original );
574574
$this->assertSame( $expected, $new );

0 commit comments

Comments
 (0)