WordPress.org

Make WordPress Core

Ticket #23834: 23834.4.diff

File 23834.4.diff, 2.0 KB (added by helen, 7 years ago)
  • wp-includes/post-template.php

     
    955955        else
    956956                $walker = $r['walker'];
    957957
     958        foreach ( (array) $pages as $page ) {
     959                if ( $page->post_parent )
     960                        $r['pages_with_children'][ $page->post_parent ] = true;
     961        }
     962
    958963        $args = array($pages, $depth, $r, $current_page);
    959964        return call_user_func_array(array($walker, 'walk'), $args);
    960965}
     
    10431048
    10441049                extract($args, EXTR_SKIP);
    10451050                $css_class = array('page_item', 'page-item-'.$page->ID);
     1051
     1052                if( isset( $args['pages_with_children'][ $page->ID ] ) )
     1053                        $css_class[] = 'page-item-has-children';
     1054
    10461055                if ( !empty($current_page) ) {
    10471056                        $_current_page = get_post( $current_page );
    10481057                        if ( in_array( $page->ID, $_current_page->ancestors ) )
  • wp-includes/nav-menu-template.php

     
    271271        // Set up the $menu_item variables
    272272        _wp_menu_item_classes_by_context( $menu_items );
    273273
    274         $sorted_menu_items = array();
    275         foreach ( (array) $menu_items as $key => $menu_item )
    276                 $sorted_menu_items[$menu_item->menu_order] = $menu_item;
     274        $sorted_menu_items = $menu_items_with_children = array();
     275        foreach ( (array) $menu_items as $menu_item ) {
     276                $sorted_menu_items[ $menu_item->menu_order ] = $menu_item;
     277                if ( $menu_item->menu_item_parent )
     278                        $menu_items_with_children[ $menu_item->menu_item_parent ] = true;
     279        }
    277280
    278         unset($menu_items);
     281        // Add the menu-item-has-children class where applicable
     282        if ( $menu_items_with_children ) {
     283                foreach ( $sorted_menu_items as &$menu_item ) {
     284                        if ( isset( $menu_items_with_children[ $menu_item->ID ] ) )
     285                                $menu_item->classes[] = 'menu-item-has-children';
     286                }
     287        }
    279288
     289        unset( $menu_items, $menu_item );
     290
    280291        /**
    281292         * Filter the sorted list of menu item objects before generating the menu's HTML.
    282293         *