Make WordPress Core

Ticket #37079: 37079.patch

File 37079.patch, 1.8 KB (added by spacedmonkey, 9 years ago)
  • src/wp-includes/nav-menu-template.php

     
    9696                $menu = wp_get_nav_menu_object( $locations[ $args->theme_location ] );
    9797
    9898        // get the first menu that has items if we still can't find a menu
    99         if ( ! $menu && !$args->theme_location ) {
     99        if ( ! $menu && !$args->theme_location && empty( $menu_items ) ) {
    100100                $menus = wp_get_nav_menus();
    101101                foreach ( $menus as $menu_maybe ) {
    102102                        if ( $menu_items = wp_get_nav_menu_items( $menu_maybe->term_id, array( 'update_post_term_cache' => false ) ) ) {
     
    111111        }
    112112
    113113        // If the menu exists, get its items.
    114         if ( $menu && ! is_wp_error($menu) && !isset($menu_items) )
     114        if ( $menu && ! is_wp_error($menu) && empty($menu_items) )
    115115                $menu_items = wp_get_nav_menu_items( $menu->term_id, array( 'update_post_term_cache' => false ) );
    116116
    117117        /*
  • src/wp-includes/nav-menu.php

     
    621621                return false;
    622622        }
    623623
     624
     625        /**
     626         * Filters whether to short-circuit the navigation menu items being returned.
     627         *
     628         * @since 4.6.0
     629         *
     630         * @param array|null  $items An array of menu item post objects to short-circuit with. Default null.
     631         * @param object $menu  The menu object.
     632         * @param array  $args  An array of arguments used to retrieve menu item objects.
     633         */
     634        $items = apply_filters( 'pre_wp_get_nav_menu_items', null, $menu, $args );
     635
     636        if ( null !== $items ) {
     637                return $items;
     638        }
     639
    624640        static $fetched = array();
    625641
    626642        $items = get_objects_in_term( $menu->term_id, 'nav_menu' );