Make WordPress Core


Ignore:
Timestamp:
11/11/2022 12:04:58 AM (2 years ago)
Author:
peterwilsoncc
Message:

Menus: Apply menu-item-has-children class in sub-menus.

Ensure the menu-item-has-children class is added to sub-menu items when wp_nav_menu() is called with the depth parameter specified to a non-zero value.

Follow up to [54478].

Props davidvongries, fpodhorsky, hellofromTonya, innovext, larsmqller, LeonidasMilossis, mattkeys, mukesh27, nuvoPoint, ocean90, outrankjames, petitphp, SergeyBiryukov, sippis, webmandesign.
Fixes #56946.
See #28620.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/menu/wp-nav-menu.php

    r54741 r54801  
    1212    static $lvl1_menu_item = 0;
    1313    static $lvl2_menu_item = 0;
     14    static $lvl3_menu_item = 0;
    1415
    1516    public static function set_up_before_class() {
     
    5051                'menu-item-url'       => '#',
    5152                'menu-item-parent-id' => self::$lvl1_menu_item,
     53                'menu-item-status'    => 'publish',
     54            )
     55        );
     56
     57        // Create lvl3 menu item.
     58        self::$lvl3_menu_item = wp_update_nav_menu_item(
     59            self::$menu_id,
     60            0,
     61            array(
     62                'menu-item-title'     => 'Lvl3 menu item',
     63                'menu-item-url'       => '#',
     64                'menu-item-parent-id' => self::$lvl2_menu_item,
    5265                'menu-item-status'    => 'publish',
    5366            )
     
    8295     *
    8396     * @ticket 28620
     97     * @ticket 56946
    8498     */
    8599    public function test_wp_nav_menu_should_have_has_children_class_without_custom_depth() {
     
    113127        $this->assertStringContainsString(
    114128            sprintf(
     129                '<li id="menu-item-%1$d" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-%1$d">',
     130                self::$lvl2_menu_item
     131            ),
     132            $menu_html,
     133            'Level 2 should be present in the HTML output and have the `menu-item-has-children` class.'
     134        );
     135
     136        $this->assertStringContainsString(
     137            sprintf(
    115138                '<li id="menu-item-%1$d" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-%1$d">',
    116                 self::$lvl2_menu_item
    117             ),
    118             $menu_html,
    119             'Level 2 should be present in the HTML output and not have the `menu-item-has-children` class since it has no children.'
     139                self::$lvl3_menu_item
     140            ),
     141            $menu_html,
     142            'Level 3 should be present in the HTML output and not have the `menu-item-has-children` class since it has no children.'
    120143        );
    121144    }
     
    126149     *
    127150     * @ticket 28620
     151     * @ticket 56946
    128152     */
    129153    public function test_wp_nav_menu_should_not_have_has_children_class_with_custom_depth() {
     
    133157            array(
    134158                'menu'  => self::$menu_id,
    135                 'depth' => 2,
     159                'depth' => 3,
    136160                'echo'  => false,
    137161            )
     
    149173        $this->assertStringContainsString(
    150174            sprintf(
     175                '<li id="menu-item-%1$d" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-has-children menu-item-%1$d">',
     176                self::$lvl1_menu_item
     177            ),
     178            $menu_html,
     179            'Level 1 should be present in the HTML output and have the `menu-item-has-children` class.'
     180        );
     181
     182        $this->assertStringContainsString(
     183            sprintf(
    151184                '<li id="menu-item-%1$d" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-%1$d">',
    152                 self::$lvl1_menu_item
    153             ),
    154             $menu_html,
    155             'Level 1 should be present in the HTML output and not have the `menu-item-has-children` class since it is the last item to be rendered.'
     185                self::$lvl2_menu_item
     186            ),
     187            $menu_html,
     188            'Level 2 should be present in the HTML output and not have the `menu-item-has-children` class since it is the last item to be rendered.'
    156189        );
    157190
     
    159192            sprintf(
    160193                '<li id="menu-item-%d"',
    161                 self::$lvl2_menu_item
    162             ),
    163             $menu_html,
    164             'Level 2 should not be present in the HTML output.'
     194                self::$lvl3_menu_item
     195            ),
     196            $menu_html,
     197            'Level 3 should not be present in the HTML output.'
    165198        );
    166199    }
Note: See TracChangeset for help on using the changeset viewer.