Make WordPress Core

Ticket #48011: 48011.2.diff

File 48011.2.diff, 1.8 KB (added by donmhico, 5 years ago)

Included unit tests and use strict comparison.

  • src/wp-includes/nav-menu.php

    diff --git src/wp-includes/nav-menu.php src/wp-includes/nav-menu.php
    index 48d8000c35..b22785dbbb 100644
    function wp_update_nav_menu_item( $menu_id = 0, $menu_item_db_id = 0, $menu_item 
    491491                        }
    492492                }
    493493
    494                 if ( $args['menu-item-title'] == $original_title ) {
     494                if ( wp_unslash( $args['menu-item-title'] ) === wp_specialchars_decode( $original_title ) ) {
    495495                        $args['menu-item-title'] = '';
    496496                }
    497497
  • tests/phpunit/tests/post/nav-menu.php

    diff --git tests/phpunit/tests/post/nav-menu.php tests/phpunit/tests/post/nav-menu.php
    index 978580e186..b31ec36d0e 100644
    class Test_Nav_Menus extends WP_UnitTestCase { 
    956956                );
    957957        }
    958958
     959        /**
     960         * @ticket 48011
     961         */
     962        function test_wp_update_nav_menu_item_with_special_character_in_categories() {
     963                // When inserting a category as a nav item, the `$args['menu-item-title']` should
     964                // always be empty as it should get the title from the category object itself.
     965                add_action( 'wp_update_nav_menu_item', [ $this, 'wp_update_nav_menu_item_48011' ], 10, 3 );
     966
     967                $category_name = 'Test Cat & >';
     968
     969                $cat = self::factory()->category->create_and_get( array(
     970                        'name' => $category_name,
     971                ) );
     972
     973                wp_update_nav_menu_item(
     974                        $this->menu_id,
     975                        0,
     976                        array(
     977                                'menu-item-type'      => 'taxonomy',
     978                                'menu-item-object'    => 'category',
     979                                'menu-item-object-id' => $cat->term_id,
     980                                'menu-item-status'    => 'publish',
     981                                'menu-item-title'     => $category_name, // Interesting enough, if we use `$cat->name` we won't be able to
     982                                                                         // replicate the bug because it's in htmlentities form.
     983                        )
     984                );
     985        }
     986
     987        function wp_update_nav_menu_item_48011( $menu_id, $menu_item_db_id, $args ) {
     988                $this->assertEmpty( $args['menu-item-title'] );
     989        }
    959990}