diff --git a/wp-admin/includes/nav-menu.php b/wp-admin/includes/nav-menu.php index ebff5f10dd..9816198996 100644 --- a/wp-admin/includes/nav-menu.php +++ b/wp-admin/includes/nav-menu.php @@ -39,8 +39,13 @@ function _wp_ajax_menu_quick_search( $request = array() ) { if ( post_type_exists( $object_type ) ) { if ( isset( $request['ID'] ) ) { $object_id = (int) $request['ID']; + if ( 'markup' === $response_format ) { - echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', array( get_post( $object_id ) ) ), 0, (object) $args ); + echo walk_nav_menu_tree( + array_map( 'wp_setup_nav_menu_item', array( get_post( $object_id ) ) ), + 0, + (object) $args + ); } elseif ( 'json' === $response_format ) { echo wp_json_encode( array( @@ -55,8 +60,13 @@ function _wp_ajax_menu_quick_search( $request = array() ) { } elseif ( taxonomy_exists( $object_type ) ) { if ( isset( $request['ID'] ) ) { $object_id = (int) $request['ID']; + if ( 'markup' === $response_format ) { - echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', array( get_term( $object_id, $object_type ) ) ), 0, (object) $args ); + echo walk_nav_menu_tree( + array_map( 'wp_setup_nav_menu_item', array( get_term( $object_id, $object_type ) ) ), + 0, + (object) $args + ); } elseif ( 'json' === $response_format ) { $post_obj = get_term( $object_id, $object_type ); echo wp_json_encode( @@ -84,18 +94,26 @@ function _wp_ajax_menu_quick_search( $request = array() ) { 's' => $query, ) ); + if ( isset( $post_type_obj->_default_query ) ) { $args = array_merge( $args, (array) $post_type_obj->_default_query ); } + $search_results_query = new WP_Query( $args ); if ( ! $search_results_query->have_posts() ) { return; } + while ( $search_results_query->have_posts() ) { $post = $search_results_query->next_post(); + if ( 'markup' === $response_format ) { $var_by_ref = $post->ID; - echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', array( get_post( $var_by_ref ) ) ), 0, (object) $args ); + echo walk_nav_menu_tree( + array_map( 'wp_setup_nav_menu_item', array( get_post( $var_by_ref ) ) ), + 0, + (object) $args + ); } elseif ( 'json' === $response_format ) { echo wp_json_encode( array( @@ -116,12 +134,18 @@ function _wp_ajax_menu_quick_search( $request = array() ) { 'hide_empty' => false, ) ); + if ( empty( $terms ) || is_wp_error( $terms ) ) { return; } + foreach ( (array) $terms as $term ) { if ( 'markup' === $response_format ) { - echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', array( $term ) ), 0, (object) $args ); + echo walk_nav_menu_tree( + array_map( 'wp_setup_nav_menu_item', array( $term ) ), + 0, + (object) $args + ); } elseif ( 'json' === $response_format ) { echo wp_json_encode( array( @@ -145,7 +169,14 @@ function _wp_ajax_menu_quick_search( $request = array() ) { function wp_nav_menu_setup() { // Register meta boxes. wp_nav_menu_post_type_meta_boxes(); - add_meta_box( 'add-custom-links', __( 'Custom Links' ), 'wp_nav_menu_item_link_meta_box', 'nav-menus', 'side', 'default' ); + add_meta_box( + 'add-custom-links', + __( 'Custom Links' ), + 'wp_nav_menu_item_link_meta_box', + 'nav-menus', + 'side', + 'default' + ); wp_nav_menu_taxonomy_meta_boxes(); // Register advanced menu items (columns). @@ -227,11 +258,20 @@ function wp_nav_menu_post_type_meta_boxes() { * meta box for. */ $post_type = apply_filters( 'nav_menu_meta_box_object', $post_type ); + if ( $post_type ) { $id = $post_type->name; // Give pages a higher priority. $priority = ( 'page' === $post_type->name ? 'core' : 'default' ); - add_meta_box( "add-post-type-{$id}", $post_type->labels->name, 'wp_nav_menu_item_post_type_meta_box', 'nav-menus', 'side', $priority, $post_type ); + add_meta_box( + "add-post-type-{$id}", + $post_type->labels->name, + 'wp_nav_menu_item_post_type_meta_box', + 'nav-menus', + 'side', + $priority, + $post_type + ); } } } @@ -251,9 +291,18 @@ function wp_nav_menu_taxonomy_meta_boxes() { foreach ( $taxonomies as $tax ) { /** This filter is documented in wp-admin/includes/nav-menu.php */ $tax = apply_filters( 'nav_menu_meta_box_object', $tax ); + if ( $tax ) { $id = $tax->name; - add_meta_box( "add-{$id}", $tax->labels->name, 'wp_nav_menu_item_taxonomy_meta_box', 'nav-menus', 'side', 'default', $tax ); + add_meta_box( + "add-{$id}", + $tax->labels->name, + 'wp_nav_menu_item_taxonomy_meta_box', + 'nav-menus', + 'side', + 'default', + $tax + ); } } } @@ -298,17 +347,26 @@ function wp_nav_menu_item_link_meta_box() {

- class="button submit-add-to-menu right" value="" name="add-custom-menu-item" id="submit-customlinkdiv" /> + + class="button submit-add-to-menu right" value="" + />

@@ -414,6 +472,7 @@ function wp_nav_menu_item_post_type_meta_box( $data_object, $box ) { if ( ! empty( $privacy_policy_page_id ) ) { $privacy_policy_page = get_post( $privacy_policy_page_id ); + if ( $privacy_policy_page instanceof WP_Post && 'publish' === $privacy_policy_page->post_status ) { $privacy_policy_page->privacy_policy_page = true; @@ -484,7 +543,7 @@ function wp_nav_menu_item_post_type_meta_box( $data_object, $box ) { $current_tab = $_REQUEST[ $tab_name ]; } - if ( ! empty( $_REQUEST[ 'quick-search-posttype-' . $post_type_name ] ) ) { + if ( ! empty( $_REQUEST[ "quick-search-posttype-{$post_type_name}" ] ) ) { $current_tab = 'search'; } @@ -500,35 +559,50 @@ function wp_nav_menu_item_post_type_meta_box( $data_object, $box ) { $most_recent_url = ''; $view_all_url = ''; $search_url = ''; + if ( $nav_menu_selected_id ) { - $most_recent_url = esc_url( add_query_arg( $tab_name, 'most-recent', remove_query_arg( $removed_args ) ) ); - $view_all_url = esc_url( add_query_arg( $tab_name, 'all', remove_query_arg( $removed_args ) ) ); - $search_url = esc_url( add_query_arg( $tab_name, 'search', remove_query_arg( $removed_args ) ) ); + $most_recent_url = add_query_arg( $tab_name, 'most-recent', remove_query_arg( $removed_args ) ); + $view_all_url = add_query_arg( $tab_name, 'all', remove_query_arg( $removed_args ) ); + $search_url = add_query_arg( $tab_name, 'search', remove_query_arg( $removed_args ) ); } ?> -
-