Ticket #28140: 28140.3.patch
File 28140.3.patch, 3.5 KB (added by , 7 years ago) |
---|
-
src/wp-includes/nav-menu.php
diff --git src/wp-includes/nav-menu.php src/wp-includes/nav-menu.php index 7adf8e1..6048112 100644
function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item 386 386 'menu-item-object-id' => 0, 387 387 'menu-item-object' => '', 388 388 'menu-item-parent-id' => 0, 389 'menu-item-position' => 0,389 'menu-item-position' => 1, 390 390 'menu-item-type' => 'custom', 391 391 'menu-item-title' => '', 392 392 'menu-item-url' => '', … … function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item 400 400 401 401 $args = wp_parse_args( $menu_item_data, $defaults ); 402 402 403 if ( 0 == $menu_id ) { 404 $args['menu-item-position'] = 1; 405 } elseif ( 0 == (int) $args['menu-item-position'] ) { 406 $menu_items = 0 == $menu_id ? array() : (array) wp_get_nav_menu_items( $menu_id, array( 'post_status' => 'publish,draft' ) ); 407 $last_item = array_pop( $menu_items ); 408 $args['menu-item-position'] = ( $last_item && isset( $last_item->menu_order ) ) ? 1 + $last_item->menu_order : count( $menu_items ); 403 if ( 0 != $menu_id && 1 == (int) $args['menu-item-position'] ) { 404 $menu_items = (array) wp_get_nav_menu_items( $menu_id, array( 'post_status' => 'publish,draft' ) ); 405 $last_item = array_pop( $menu_items ); 406 if ( $last_item && isset( $last_item->menu_order ) ) { 407 $args['menu-item-position'] = 1 + $last_item->menu_order; 408 } elseif ( count( $menu_items ) ) { 409 $args['menu-item-position'] = count( $menu_items ); 410 } 409 411 } 410 412 411 413 $original_parent = 0 < $menu_item_db_id ? get_post_field( 'post_parent', $menu_item_db_id ) : 0; -
tests/phpunit/tests/post/nav-menu.php
diff --git tests/phpunit/tests/post/nav-menu.php tests/phpunit/tests/post/nav-menu.php index 91a68ce..f5e2ecd 100644
class Test_Nav_Menus extends WP_UnitTestCase { 612 612 $this->assertNotContains( 'current-menu-ancestor', $post_archive_menu_item->classes ); 613 613 } 614 614 615 /** 616 * @ticket 28140 617 */ 618 public function test_position_for_first_menu_item_on_menu_should_be_one() { 619 620 $first_menu_item_id = wp_update_nav_menu_item( $this->menu_id, 0, array( 621 'menu-item-status' => 'publish' 622 ) ); 623 624 $second_menu_item_id = wp_update_nav_menu_item( $this->menu_id, 0, array( 625 'menu-item-status' => 'publish' 626 ) ); 627 628 $first_menu_order = get_post_field( 'menu_order', $first_menu_item_id ); 629 $second_menu_order = get_post_field( 'menu_order', $second_menu_item_id ); 630 631 $this->assertEquals( 1, $first_menu_order ); 632 $this->assertEquals( 2, $second_menu_order ); 633 } 634 635 /** 636 * @ticket 28140 637 */ 638 public function test_menu_order_in_wp_get_nav_menu_items_should_start_from_one() { 639 640 $first_menu_item_id = wp_update_nav_menu_item( $this->menu_id, 0, array( 641 'menu-item-status' => 'publish' 642 ) ); 643 644 $second_menu_item_id = wp_update_nav_menu_item( $this->menu_id, 0, array( 645 'menu-item-status' => 'publish' 646 ) ); 647 648 $menu_items = wp_get_nav_menu_items( $this->menu_id ); 649 650 $actual_menu_orders = wp_list_pluck( $menu_items, 'menu_order' ); 651 652 $expected_menu_orders = array( 1, 2 ); 653 654 $this->assertSame( $expected_menu_orders, $actual_menu_orders ); 655 } 656 615 657 }