From 792295d07716a97a718b57c7b729ab73791d4642 Mon Sep 17 00:00:00 2001 From: Dominik Schilling Date: Sat, 13 Jun 2015 14:38:25 +0000 Subject: [PATCH] Nav menus: Apply the `wp_get_nav_menu_items` filter also on an empty list of menu items. props westonruter. fixes #32631. Built from https://develop.svn.wordpress.org/trunk@32748 git-svn-id: http://core.svn.wordpress.org/trunk@32719 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/nav-menu.php | 23 +++++++++++++---------- wp-includes/version.php | 2 +- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/wp-includes/nav-menu.php b/wp-includes/nav-menu.php index 26d2e8ca38..625eea6414 100644 --- a/wp-includes/nav-menu.php +++ b/wp-includes/nav-menu.php @@ -560,25 +560,27 @@ function _is_valid_nav_menu_item( $item ) { function wp_get_nav_menu_items( $menu, $args = array() ) { $menu = wp_get_nav_menu_object( $menu ); - if ( ! $menu ) + if ( ! $menu ) { return false; + } static $fetched = array(); $items = get_objects_in_term( $menu->term_id, 'nav_menu' ); - - if ( empty( $items ) ) - return $items; + if ( is_wp_error( $items ) ) { + return false; + } $defaults = array( 'order' => 'ASC', 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item', 'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order', 'nopaging' => true ); $args = wp_parse_args( $args, $defaults ); $args['include'] = $items; - $items = get_posts( $args ); - - if ( is_wp_error( $items ) || ! is_array( $items ) ) - return false; + if ( ! empty( $items ) ) { + $items = get_posts( $args ); + } else { + $items = array(); + } // Get all posts and terms at once to prime the caches if ( empty( $fetched[$menu->term_id] ) || wp_using_ext_object_cache() ) { @@ -616,8 +618,9 @@ function wp_get_nav_menu_items( $menu, $args = array() ) { $items = array_map( 'wp_setup_nav_menu_item', $items ); - if ( ! is_admin() ) // Remove invalid items only in frontend + if ( ! is_admin() ) { // Remove invalid items only in frontend $items = array_filter( $items, '_is_valid_nav_menu_item' ); + } if ( ARRAY_A == $args['output'] ) { $GLOBALS['_menu_item_sort_prop'] = $args['output_key']; @@ -637,7 +640,7 @@ function wp_get_nav_menu_items( $menu, $args = array() ) { * @param object $menu The menu object. * @param array $args An array of arguments used to retrieve menu item objects. */ - return apply_filters( 'wp_get_nav_menu_items', $items, $menu, $args ); + return apply_filters( 'wp_get_nav_menu_items', $items, $menu, $args ); } /** diff --git a/wp-includes/version.php b/wp-includes/version.php index f395e143e1..6cda89c98d 100644 --- a/wp-includes/version.php +++ b/wp-includes/version.php @@ -4,7 +4,7 @@ * * @global string $wp_version */ -$wp_version = '4.3-alpha-32747'; +$wp_version = '4.3-alpha-32748'; /** * Holds the WordPress DB revision, increments when changes are made to the WordPress DB schema.