34 if ( 'get-post-item' == $type ) { |
34 if ( 'get-post-item' == $type ) { |
35 if ( post_type_exists( $object_type ) ) { |
35 if ( post_type_exists( $object_type ) ) { |
36 if ( isset( $request['ID'] ) ) { |
36 if ( isset( $request['ID'] ) ) { |
37 $object_id = (int) $request['ID']; |
37 $object_id = (int) $request['ID']; |
38 if ( 'markup' == $response_format ) { |
38 if ( 'markup' == $response_format ) { |
39 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $object_id ) ) ), 0, (object) $args ); |
39 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', array( get_post( $object_id ) ) ), 0, (object) $args ); |
40 } elseif ( 'json' == $response_format ) { |
40 } elseif ( 'json' == $response_format ) { |
41 echo wp_json_encode( |
41 echo wp_json_encode( |
42 array( |
42 array( |
43 'ID' => $object_id, |
43 'ID' => $object_id, |
44 'post_title' => get_the_title( $object_id ), |
44 'post_title' => get_the_title( $object_id ), |
45 'post_type' => get_post_type( $object_id ), |
45 'post_type' => get_post_type( $object_id ), |
46 ) |
46 ) |
47 ); |
47 ); |
48 echo "\n"; |
48 echo "\n"; |
49 } |
49 } |
50 } |
50 } |
51 } elseif ( taxonomy_exists( $object_type ) ) { |
51 } elseif ( taxonomy_exists( $object_type ) ) { |
52 if ( isset( $request['ID'] ) ) { |
52 if ( isset( $request['ID'] ) ) { |
53 $object_id = (int) $request['ID']; |
53 $object_id = (int) $request['ID']; |
54 if ( 'markup' == $response_format ) { |
54 if ( 'markup' == $response_format ) { |
55 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_term( $object_id, $object_type ) ) ), 0, (object) $args ); |
55 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', array( get_term( $object_id, $object_type ) ) ), 0, (object) $args ); |
56 } elseif ( 'json' == $response_format ) { |
56 } elseif ( 'json' == $response_format ) { |
57 $post_obj = get_term( $object_id, $object_type ); |
57 $post_obj = get_term( $object_id, $object_type ); |
58 echo wp_json_encode( |
58 echo wp_json_encode( |
59 array( |
59 array( |
60 'ID' => $object_id, |
60 'ID' => $object_id, |
61 'post_title' => $post_obj->name, |
61 'post_title' => $post_obj->name, |
62 'post_type' => $object_type, |
62 'post_type' => $object_type, |
63 ) |
63 ) |
64 ); |
64 ); |
65 echo "\n"; |
65 echo "\n"; |
66 } |
66 } |
67 } |
67 } |
68 |
68 } |
69 } |
69 } elseif ( preg_match( '/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*\b)/', $type, $matches ) ) { |
70 |
|
71 } elseif ( preg_match('/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*\b)/', $type, $matches) ) { |
|
72 if ( 'posttype' == $matches[1] && get_post_type_object( $matches[2] ) ) { |
70 if ( 'posttype' == $matches[1] && get_post_type_object( $matches[2] ) ) { |
73 $post_type_obj = _wp_nav_menu_meta_box_object( get_post_type_object( $matches[2] ) ); |
71 $post_type_obj = _wp_nav_menu_meta_box_object( get_post_type_object( $matches[2] ) ); |
74 $args = array_merge( |
72 $args = array_merge( |
75 $args, |
73 $args, |
76 array( |
74 array( |
77 'no_found_rows' => true, |
75 'no_found_rows' => true, |
78 'update_post_meta_cache' => false, |
76 'update_post_meta_cache' => false, |
79 'update_post_term_cache' => false, |
77 'update_post_term_cache' => false, |
91 } |
89 } |
92 while ( $search_results_query->have_posts() ) { |
90 while ( $search_results_query->have_posts() ) { |
93 $post = $search_results_query->next_post(); |
91 $post = $search_results_query->next_post(); |
94 if ( 'markup' == $response_format ) { |
92 if ( 'markup' == $response_format ) { |
95 $var_by_ref = $post->ID; |
93 $var_by_ref = $post->ID; |
96 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( get_post( $var_by_ref ) ) ), 0, (object) $args ); |
94 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', array( get_post( $var_by_ref ) ) ), 0, (object) $args ); |
97 } elseif ( 'json' == $response_format ) { |
95 } elseif ( 'json' == $response_format ) { |
98 echo wp_json_encode( |
96 echo wp_json_encode( |
99 array( |
97 array( |
100 'ID' => $post->ID, |
98 'ID' => $post->ID, |
101 'post_title' => get_the_title( $post->ID ), |
99 'post_title' => get_the_title( $post->ID ), |
102 'post_type' => $matches[2], |
100 'post_type' => $matches[2], |
103 ) |
101 ) |
104 ); |
102 ); |
105 echo "\n"; |
103 echo "\n"; |
106 } |
104 } |
107 } |
105 } |
108 } elseif ( 'taxonomy' == $matches[1] ) { |
106 } elseif ( 'taxonomy' == $matches[1] ) { |
109 $terms = get_terms( $matches[2], array( |
107 $terms = get_terms( |
110 'name__like' => $query, |
108 array( |
111 'number' => 10, |
109 'taxonomy' => $matches[2], |
112 )); |
110 'name__like' => $query, |
113 if ( empty( $terms ) || is_wp_error( $terms ) ) |
111 'number' => 10, |
|
112 ) |
|
113 ); |
|
114 if ( empty( $terms ) || is_wp_error( $terms ) ) { |
114 return; |
115 return; |
|
116 } |
115 foreach ( (array) $terms as $term ) { |
117 foreach ( (array) $terms as $term ) { |
116 if ( 'markup' == $response_format ) { |
118 if ( 'markup' == $response_format ) { |
117 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', array( $term ) ), 0, (object) $args ); |
119 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', array( $term ) ), 0, (object) $args ); |
118 } elseif ( 'json' == $response_format ) { |
120 } elseif ( 'json' == $response_format ) { |
119 echo wp_json_encode( |
121 echo wp_json_encode( |
120 array( |
122 array( |
121 'ID' => $term->term_id, |
123 'ID' => $term->term_id, |
122 'post_title' => $term->name, |
124 'post_title' => $term->name, |
123 'post_type' => $matches[2], |
125 'post_type' => $matches[2], |
124 ) |
126 ) |
125 ); |
127 ); |
126 echo "\n"; |
128 echo "\n"; |
127 } |
129 } |
128 } |
130 } |
145 add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns' ); |
147 add_filter( 'manage_nav-menus_columns', 'wp_nav_menu_manage_columns' ); |
146 |
148 |
147 // If first time editing, disable advanced items by default. |
149 // If first time editing, disable advanced items by default. |
148 if ( false === get_user_option( 'managenav-menuscolumnshidden' ) ) { |
150 if ( false === get_user_option( 'managenav-menuscolumnshidden' ) ) { |
149 $user = wp_get_current_user(); |
151 $user = wp_get_current_user(); |
150 update_user_option($user->ID, 'managenav-menuscolumnshidden', |
152 update_user_option( |
151 array( 0 => 'link-target', 1 => 'css-classes', 2 => 'xfn', 3 => 'description', 4 => 'title-attribute', ), |
153 $user->ID, |
152 true); |
154 'managenav-menuscolumnshidden', |
|
155 array( |
|
156 0 => 'link-target', |
|
157 1 => 'css-classes', |
|
158 2 => 'xfn', |
|
159 3 => 'description', |
|
160 4 => 'title-attribute', |
|
161 ), |
|
162 true |
|
163 ); |
153 } |
164 } |
154 } |
165 } |
155 |
166 |
156 /** |
167 /** |
157 * Limit the amount of meta boxes to pages, posts, links, and categories for first time users. |
168 * Limit the amount of meta boxes to pages, posts, links, and categories for first time users. |
158 * |
169 * |
159 * @since 3.0.0 |
170 * @since 3.0.0 |
160 * |
171 * |
161 * @global array $wp_meta_boxes |
172 * @global array $wp_meta_boxes |
162 **/ |
173 */ |
163 function wp_initial_nav_menu_meta_boxes() { |
174 function wp_initial_nav_menu_meta_boxes() { |
164 global $wp_meta_boxes; |
175 global $wp_meta_boxes; |
165 |
176 |
166 if ( get_user_option( 'metaboxhidden_nav-menus' ) !== false || ! is_array($wp_meta_boxes) ) |
177 if ( get_user_option( 'metaboxhidden_nav-menus' ) !== false || ! is_array( $wp_meta_boxes ) ) { |
167 return; |
178 return; |
|
179 } |
168 |
180 |
169 $initial_meta_boxes = array( 'add-post-type-page', 'add-post-type-post', 'add-custom-links', 'add-category' ); |
181 $initial_meta_boxes = array( 'add-post-type-page', 'add-post-type-post', 'add-custom-links', 'add-category' ); |
170 $hidden_meta_boxes = array(); |
182 $hidden_meta_boxes = array(); |
171 |
183 |
172 foreach ( array_keys($wp_meta_boxes['nav-menus']) as $context ) { |
184 foreach ( array_keys( $wp_meta_boxes['nav-menus'] ) as $context ) { |
173 foreach ( array_keys($wp_meta_boxes['nav-menus'][$context]) as $priority ) { |
185 foreach ( array_keys( $wp_meta_boxes['nav-menus'][ $context ] ) as $priority ) { |
174 foreach ( $wp_meta_boxes['nav-menus'][$context][$priority] as $box ) { |
186 foreach ( $wp_meta_boxes['nav-menus'][ $context ][ $priority ] as $box ) { |
175 if ( in_array( $box['id'], $initial_meta_boxes ) ) { |
187 if ( in_array( $box['id'], $initial_meta_boxes ) ) { |
176 unset( $box['id'] ); |
188 unset( $box['id'] ); |
177 } else { |
189 } else { |
178 $hidden_meta_boxes[] = $box['id']; |
190 $hidden_meta_boxes[] = $box['id']; |
179 } |
191 } |
319 |
334 |
320 $post_type_name = $box['args']->name; |
335 $post_type_name = $box['args']->name; |
321 |
336 |
322 // Paginate browsing for large numbers of post objects. |
337 // Paginate browsing for large numbers of post objects. |
323 $per_page = 50; |
338 $per_page = 50; |
324 $pagenum = isset( $_REQUEST[$post_type_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; |
339 $pagenum = isset( $_REQUEST[ $post_type_name . '-tab' ] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; |
325 $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; |
340 $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; |
326 |
341 |
327 $args = array( |
342 $args = array( |
328 'offset' => $offset, |
343 'offset' => $offset, |
329 'order' => 'ASC', |
344 'order' => 'ASC', |
330 'orderby' => 'title', |
345 'orderby' => 'title', |
331 'posts_per_page' => $per_page, |
346 'posts_per_page' => $per_page, |
332 'post_type' => $post_type_name, |
347 'post_type' => $post_type_name, |
333 'suppress_filters' => true, |
348 'suppress_filters' => true, |
334 'update_post_term_cache' => false, |
349 'update_post_term_cache' => false, |
335 'update_post_meta_cache' => false |
350 'update_post_meta_cache' => false, |
336 ); |
351 ); |
337 |
352 |
338 if ( isset( $box['args']->_default_query ) ) |
353 if ( isset( $box['args']->_default_query ) ) { |
339 $args = array_merge($args, (array) $box['args']->_default_query ); |
354 $args = array_merge( $args, (array) $box['args']->_default_query ); |
|
355 } |
340 |
356 |
341 // @todo transient caching of these results with proper invalidation on updating of a post of this type |
357 // @todo transient caching of these results with proper invalidation on updating of a post of this type |
342 $get_posts = new WP_Query; |
358 $get_posts = new WP_Query; |
343 $posts = $get_posts->query( $args ); |
359 $posts = $get_posts->query( $args ); |
344 if ( ! $get_posts->post_count ) { |
360 if ( ! $get_posts->post_count ) { |
345 echo '<p>' . __( 'No items.' ) . '</p>'; |
361 echo '<p>' . __( 'No items.' ) . '</p>'; |
346 return; |
362 return; |
347 } |
363 } |
348 |
364 |
349 $num_pages = $get_posts->max_num_pages; |
365 $num_pages = $get_posts->max_num_pages; |
350 |
366 |
351 $page_links = paginate_links( array( |
367 $page_links = paginate_links( |
352 'base' => add_query_arg( |
368 array( |
353 array( |
369 'base' => add_query_arg( |
354 $post_type_name . '-tab' => 'all', |
370 array( |
355 'paged' => '%#%', |
371 $post_type_name . '-tab' => 'all', |
356 'item-type' => 'post_type', |
372 'paged' => '%#%', |
357 'item-object' => $post_type_name, |
373 'item-type' => 'post_type', |
358 ) |
374 'item-object' => $post_type_name, |
359 ), |
375 ) |
360 'format' => '', |
376 ), |
361 'prev_text' => '<span aria-label="' . esc_attr__( 'Previous page' ) . '">' . __( '«' ) . '</span>', |
377 'format' => '', |
362 'next_text' => '<span aria-label="' . esc_attr__( 'Next page' ) . '">' . __( '»' ) . '</span>', |
378 'prev_text' => '<span aria-label="' . esc_attr__( 'Previous page' ) . '">' . __( '«' ) . '</span>', |
363 'before_page_number' => '<span class="screen-reader-text">' . __( 'Page' ) . '</span> ', |
379 'next_text' => '<span aria-label="' . esc_attr__( 'Next page' ) . '">' . __( '»' ) . '</span>', |
364 'total' => $num_pages, |
380 'before_page_number' => '<span class="screen-reader-text">' . __( 'Page' ) . '</span> ', |
365 'current' => $pagenum |
381 'total' => $num_pages, |
366 )); |
382 'current' => $pagenum, |
|
383 ) |
|
384 ); |
367 |
385 |
368 $db_fields = false; |
386 $db_fields = false; |
369 if ( is_post_type_hierarchical( $post_type_name ) ) { |
387 if ( is_post_type_hierarchical( $post_type_name ) ) { |
370 $db_fields = array( 'parent' => 'post_parent', 'id' => 'ID' ); |
388 $db_fields = array( |
|
389 'parent' => 'post_parent', |
|
390 'id' => 'ID', |
|
391 ); |
371 } |
392 } |
372 |
393 |
373 $walker = new Walker_Nav_Menu_Checklist( $db_fields ); |
394 $walker = new Walker_Nav_Menu_Checklist( $db_fields ); |
374 |
395 |
375 $current_tab = 'most-recent'; |
396 $current_tab = 'most-recent'; |
376 if ( isset( $_REQUEST[$post_type_name . '-tab'] ) && in_array( $_REQUEST[$post_type_name . '-tab'], array('all', 'search') ) ) { |
397 if ( isset( $_REQUEST[ $post_type_name . '-tab' ] ) && in_array( $_REQUEST[ $post_type_name . '-tab' ], array( 'all', 'search' ) ) ) { |
377 $current_tab = $_REQUEST[$post_type_name . '-tab']; |
398 $current_tab = $_REQUEST[ $post_type_name . '-tab' ]; |
378 } |
399 } |
379 |
400 |
380 if ( ! empty( $_REQUEST['quick-search-posttype-' . $post_type_name] ) ) { |
401 if ( ! empty( $_REQUEST[ 'quick-search-posttype-' . $post_type_name ] ) ) { |
381 $current_tab = 'search'; |
402 $current_tab = 'search'; |
382 } |
403 } |
383 |
404 |
384 $removed_args = array( |
405 $removed_args = array( |
385 'action', |
406 'action', |
388 'menu-item', |
409 'menu-item', |
389 'page-tab', |
410 'page-tab', |
390 '_wpnonce', |
411 '_wpnonce', |
391 ); |
412 ); |
392 |
413 |
|
414 $most_recent_url = $view_all_url = $search_url = ''; |
|
415 if ( $nav_menu_selected_id ) { |
|
416 $most_recent_url = esc_url( add_query_arg( $post_type_name . '-tab', 'most-recent', remove_query_arg( $removed_args ) ) ); |
|
417 $view_all_url = esc_url( add_query_arg( $post_type_name . '-tab', 'all', remove_query_arg( $removed_args ) ) ); |
|
418 $search_url = esc_url( add_query_arg( $post_type_name . '-tab', 'search', remove_query_arg( $removed_args ) ) ); |
|
419 } |
393 ?> |
420 ?> |
394 <div id="posttype-<?php echo $post_type_name; ?>" class="posttypediv"> |
421 <div id="posttype-<?php echo $post_type_name; ?>" class="posttypediv"> |
395 <ul id="posttype-<?php echo $post_type_name; ?>-tabs" class="posttype-tabs add-menu-item-tabs"> |
422 <ul id="posttype-<?php echo $post_type_name; ?>-tabs" class="posttype-tabs add-menu-item-tabs"> |
396 <li <?php echo ( 'most-recent' == $current_tab ? ' class="tabs"' : '' ); ?>> |
423 <li <?php echo ( 'most-recent' == $current_tab ? ' class="tabs"' : '' ); ?>> |
397 <a class="nav-tab-link" data-type="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-most-recent" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'most-recent', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent"> |
424 <a class="nav-tab-link" data-type="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-most-recent" href="<?php echo $most_recent_url; ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent"> |
398 <?php _e( 'Most Recent' ); ?> |
425 <?php _e( 'Most Recent' ); ?> |
399 </a> |
426 </a> |
400 </li> |
427 </li> |
401 <li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>> |
428 <li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>> |
402 <a class="nav-tab-link" data-type="<?php echo esc_attr( $post_type_name ); ?>-all" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#<?php echo $post_type_name; ?>-all"> |
429 <a class="nav-tab-link" data-type="<?php echo esc_attr( $post_type_name ); ?>-all" href="<?php echo $view_all_url; ?>#<?php echo $post_type_name; ?>-all"> |
403 <?php _e( 'View All' ); ?> |
430 <?php _e( 'View All' ); ?> |
404 </a> |
431 </a> |
405 </li> |
432 </li> |
406 <li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>> |
433 <li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>> |
407 <a class="nav-tab-link" data-type="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-search" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-search"> |
434 <a class="nav-tab-link" data-type="tabs-panel-posttype-<?php echo esc_attr( $post_type_name ); ?>-search" href="<?php echo $search_url; ?>#tabs-panel-posttype-<?php echo $post_type_name; ?>-search"> |
408 <?php _e( 'Search'); ?> |
435 <?php _e( 'Search' ); ?> |
409 </a> |
436 </a> |
410 </li> |
437 </li> |
411 </ul><!-- .posttype-tabs --> |
438 </ul><!-- .posttype-tabs --> |
412 |
439 |
413 <div id="tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent" class="tabs-panel <?php |
440 <div id="tabs-panel-posttype-<?php echo $post_type_name; ?>-most-recent" class="tabs-panel <?php echo ( 'most-recent' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); ?>"> |
414 echo ( 'most-recent' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); |
|
415 ?>"> |
|
416 <ul id="<?php echo $post_type_name; ?>checklist-most-recent" class="categorychecklist form-no-clear"> |
441 <ul id="<?php echo $post_type_name; ?>checklist-most-recent" class="categorychecklist form-no-clear"> |
417 <?php |
442 <?php |
418 $recent_args = array_merge( $args, array( 'orderby' => 'post_date', 'order' => 'DESC', 'posts_per_page' => 15 ) ); |
443 $recent_args = array_merge( |
419 $most_recent = $get_posts->query( $recent_args ); |
444 $args, |
|
445 array( |
|
446 'orderby' => 'post_date', |
|
447 'order' => 'DESC', |
|
448 'posts_per_page' => 15, |
|
449 ) |
|
450 ); |
|
451 $most_recent = $get_posts->query( $recent_args ); |
420 $args['walker'] = $walker; |
452 $args['walker'] = $walker; |
421 |
453 |
422 /** |
454 /** |
423 * Filters the posts displayed in the 'Most Recent' tab of the current |
455 * Filters the posts displayed in the 'Most Recent' tab of the current |
424 * post type's menu items meta box. |
456 * post type's menu items meta box. |
426 * The dynamic portion of the hook name, `$post_type_name`, refers to the post type name. |
458 * The dynamic portion of the hook name, `$post_type_name`, refers to the post type name. |
427 * |
459 * |
428 * @since 4.3.0 |
460 * @since 4.3.0 |
429 * @since 4.9.0 Added the `$recent_args` parameter. |
461 * @since 4.9.0 Added the `$recent_args` parameter. |
430 * |
462 * |
431 * @param array $most_recent An array of post objects being listed. |
463 * @param WP_Post[] $most_recent An array of post objects being listed. |
432 * @param array $args An array of WP_Query arguments for the meta box. |
464 * @param array $args An array of `WP_Query` arguments for the meta box. |
433 * @param array $box Arguments passed to wp_nav_menu_item_post_type_meta_box(). |
465 * @param array $box Arguments passed to `wp_nav_menu_item_post_type_meta_box()`. |
434 * @param array $recent_args An array of WP_Query arguments for 'Most Recent' tab. |
466 * @param array $recent_args An array of `WP_Query` arguments for 'Most Recent' tab. |
435 */ |
467 */ |
436 $most_recent = apply_filters( "nav_menu_items_{$post_type_name}_recent", $most_recent, $args, $box, $recent_args ); |
468 $most_recent = apply_filters( "nav_menu_items_{$post_type_name}_recent", $most_recent, $args, $box, $recent_args ); |
437 |
469 |
438 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $most_recent ), 0, (object) $args ); |
470 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $most_recent ), 0, (object) $args ); |
439 ?> |
471 ?> |
440 </ul> |
472 </ul> |
441 </div><!-- /.tabs-panel --> |
473 </div><!-- /.tabs-panel --> |
442 |
474 |
443 <div class="tabs-panel <?php |
475 <div class="tabs-panel <?php echo ( 'search' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); ?>" id="tabs-panel-posttype-<?php echo $post_type_name; ?>-search"> |
444 echo ( 'search' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); |
|
445 ?>" id="tabs-panel-posttype-<?php echo $post_type_name; ?>-search"> |
|
446 <?php |
476 <?php |
447 if ( isset( $_REQUEST['quick-search-posttype-' . $post_type_name] ) ) { |
477 if ( isset( $_REQUEST[ 'quick-search-posttype-' . $post_type_name ] ) ) { |
448 $searched = esc_attr( $_REQUEST['quick-search-posttype-' . $post_type_name] ); |
478 $searched = esc_attr( $_REQUEST[ 'quick-search-posttype-' . $post_type_name ] ); |
449 $search_results = get_posts( array( 's' => $searched, 'post_type' => $post_type_name, 'fields' => 'all', 'order' => 'DESC', ) ); |
479 $search_results = get_posts( |
|
480 array( |
|
481 's' => $searched, |
|
482 'post_type' => $post_type_name, |
|
483 'fields' => 'all', |
|
484 'order' => 'DESC', |
|
485 ) |
|
486 ); |
450 } else { |
487 } else { |
451 $searched = ''; |
488 $searched = ''; |
452 $search_results = array(); |
489 $search_results = array(); |
453 } |
490 } |
454 ?> |
491 ?> |
455 <p class="quick-search-wrap"> |
492 <p class="quick-search-wrap"> |
456 <label for="quick-search-posttype-<?php echo $post_type_name; ?>" class="screen-reader-text"><?php _e( 'Search' ); ?></label> |
493 <label for="quick-search-posttype-<?php echo $post_type_name; ?>" class="screen-reader-text"><?php _e( 'Search' ); ?></label> |
457 <input type="search" class="quick-search" value="<?php echo $searched; ?>" name="quick-search-posttype-<?php echo $post_type_name; ?>" id="quick-search-posttype-<?php echo $post_type_name; ?>" /> |
494 <input type="search" class="quick-search" value="<?php echo $searched; ?>" name="quick-search-posttype-<?php echo $post_type_name; ?>" id="quick-search-posttype-<?php echo $post_type_name; ?>" /> |
458 <span class="spinner"></span> |
495 <span class="spinner"></span> |
459 <?php submit_button( __( 'Search' ), 'small quick-search-submit hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-posttype-' . $post_type_name ) ); ?> |
496 <?php submit_button( __( 'Search' ), 'small quick-search-submit hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-posttype-' . $post_type_name ) ); ?> |
460 </p> |
497 </p> |
461 |
498 |
462 <ul id="<?php echo $post_type_name; ?>-search-checklist" data-wp-lists="list:<?php echo $post_type_name?>" class="categorychecklist form-no-clear"> |
499 <ul id="<?php echo $post_type_name; ?>-search-checklist" data-wp-lists="list:<?php echo $post_type_name; ?>" class="categorychecklist form-no-clear"> |
463 <?php if ( ! empty( $search_results ) && ! is_wp_error( $search_results ) ) : ?> |
500 <?php if ( ! empty( $search_results ) && ! is_wp_error( $search_results ) ) : ?> |
464 <?php |
501 <?php |
465 $args['walker'] = $walker; |
502 $args['walker'] = $walker; |
466 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $search_results), 0, (object) $args ); |
503 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $search_results ), 0, (object) $args ); |
467 ?> |
504 ?> |
468 <?php elseif ( is_wp_error( $search_results ) ) : ?> |
505 <?php elseif ( is_wp_error( $search_results ) ) : ?> |
469 <li><?php echo $search_results->get_error_message(); ?></li> |
506 <li><?php echo $search_results->get_error_message(); ?></li> |
470 <?php elseif ( ! empty( $searched ) ) : ?> |
507 <?php elseif ( ! empty( $searched ) ) : ?> |
471 <li><?php _e('No results found.'); ?></li> |
508 <li><?php _e( 'No results found.' ); ?></li> |
472 <?php endif; ?> |
509 <?php endif; ?> |
473 </ul> |
510 </ul> |
474 </div><!-- /.tabs-panel --> |
511 </div><!-- /.tabs-panel --> |
475 |
512 |
476 <div id="<?php echo $post_type_name; ?>-all" class="tabs-panel tabs-panel-view-all <?php |
513 <div id="<?php echo $post_type_name; ?>-all" class="tabs-panel tabs-panel-view-all <?php echo ( 'all' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); ?>"> |
477 echo ( 'all' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); |
|
478 ?>"> |
|
479 <?php if ( ! empty( $page_links ) ) : ?> |
514 <?php if ( ! empty( $page_links ) ) : ?> |
480 <div class="add-menu-item-pagelinks"> |
515 <div class="add-menu-item-pagelinks"> |
481 <?php echo $page_links; ?> |
516 <?php echo $page_links; ?> |
482 </div> |
517 </div> |
483 <?php endif; ?> |
518 <?php endif; ?> |
484 <ul id="<?php echo $post_type_name; ?>checklist" data-wp-lists="list:<?php echo $post_type_name?>" class="categorychecklist form-no-clear"> |
519 <ul id="<?php echo $post_type_name; ?>checklist" data-wp-lists="list:<?php echo $post_type_name; ?>" class="categorychecklist form-no-clear"> |
485 <?php |
520 <?php |
486 $args['walker'] = $walker; |
521 $args['walker'] = $walker; |
487 |
522 |
488 /* |
523 /* |
489 * If we're dealing with pages, let's put a checkbox for the front |
524 * If we're dealing with pages, let's put a checkbox for the front |
490 * page at the top of the list. |
525 * page at the top of the list. |
491 */ |
526 */ |
492 if ( 'page' == $post_type_name ) { |
527 if ( 'page' == $post_type_name ) { |
493 $front_page = 'page' == get_option('show_on_front') ? (int) get_option( 'page_on_front' ) : 0; |
528 $front_page = 'page' == get_option( 'show_on_front' ) ? (int) get_option( 'page_on_front' ) : 0; |
494 if ( ! empty( $front_page ) ) { |
529 if ( ! empty( $front_page ) ) { |
495 $front_page_obj = get_post( $front_page ); |
530 $front_page_obj = get_post( $front_page ); |
496 $front_page_obj->front_or_home = true; |
531 $front_page_obj->front_or_home = true; |
497 array_unshift( $posts, $front_page_obj ); |
532 array_unshift( $posts, $front_page_obj ); |
498 } else { |
533 } else { |
499 $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1; |
534 $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval( $_nav_menu_placeholder ) - 1 : -1; |
500 array_unshift( $posts, (object) array( |
535 array_unshift( |
501 'front_or_home' => true, |
536 $posts, |
502 'ID' => 0, |
537 (object) array( |
503 'object_id' => $_nav_menu_placeholder, |
538 'front_or_home' => true, |
|
539 'ID' => 0, |
|
540 'object_id' => $_nav_menu_placeholder, |
|
541 'post_content' => '', |
|
542 'post_excerpt' => '', |
|
543 'post_parent' => '', |
|
544 'post_title' => _x( 'Home', 'nav menu home label' ), |
|
545 'post_type' => 'nav_menu_item', |
|
546 'type' => 'custom', |
|
547 'url' => home_url( '/' ), |
|
548 ) |
|
549 ); |
|
550 } |
|
551 } |
|
552 |
|
553 $post_type = get_post_type_object( $post_type_name ); |
|
554 |
|
555 if ( $post_type->has_archive ) { |
|
556 $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval( $_nav_menu_placeholder ) - 1 : -1; |
|
557 array_unshift( |
|
558 $posts, |
|
559 (object) array( |
|
560 'ID' => 0, |
|
561 'object_id' => $_nav_menu_placeholder, |
|
562 'object' => $post_type_name, |
504 'post_content' => '', |
563 'post_content' => '', |
505 'post_excerpt' => '', |
564 'post_excerpt' => '', |
506 'post_parent' => '', |
565 'post_title' => $post_type->labels->archives, |
507 'post_title' => _x('Home', 'nav menu home label'), |
566 'post_type' => 'nav_menu_item', |
508 'post_type' => 'nav_menu_item', |
567 'type' => 'post_type_archive', |
509 'type' => 'custom', |
568 'url' => get_post_type_archive_link( $post_type_name ), |
510 'url' => home_url('/'), |
569 ) |
511 ) ); |
570 ); |
512 } |
|
513 } |
|
514 |
|
515 $post_type = get_post_type_object( $post_type_name ); |
|
516 |
|
517 if ( $post_type->has_archive ) { |
|
518 $_nav_menu_placeholder = ( 0 > $_nav_menu_placeholder ) ? intval($_nav_menu_placeholder) - 1 : -1; |
|
519 array_unshift( $posts, (object) array( |
|
520 'ID' => 0, |
|
521 'object_id' => $_nav_menu_placeholder, |
|
522 'object' => $post_type_name, |
|
523 'post_content' => '', |
|
524 'post_excerpt' => '', |
|
525 'post_title' => $post_type->labels->archives, |
|
526 'post_type' => 'nav_menu_item', |
|
527 'type' => 'post_type_archive', |
|
528 'url' => get_post_type_archive_link( $post_type_name ), |
|
529 ) ); |
|
530 } |
571 } |
531 |
572 |
532 /** |
573 /** |
533 * Filters the posts displayed in the 'View All' tab of the current |
574 * Filters the posts displayed in the 'View All' tab of the current |
534 * post type's menu items meta box. |
575 * post type's menu items meta box. |
605 * } |
651 * } |
606 */ |
652 */ |
607 function wp_nav_menu_item_taxonomy_meta_box( $object, $box ) { |
653 function wp_nav_menu_item_taxonomy_meta_box( $object, $box ) { |
608 global $nav_menu_selected_id; |
654 global $nav_menu_selected_id; |
609 $taxonomy_name = $box['args']->name; |
655 $taxonomy_name = $box['args']->name; |
610 $taxonomy = get_taxonomy( $taxonomy_name ); |
656 $taxonomy = get_taxonomy( $taxonomy_name ); |
611 |
657 |
612 // Paginate browsing for large numbers of objects. |
658 // Paginate browsing for large numbers of objects. |
613 $per_page = 50; |
659 $per_page = 50; |
614 $pagenum = isset( $_REQUEST[$taxonomy_name . '-tab'] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; |
660 $pagenum = isset( $_REQUEST[ $taxonomy_name . '-tab' ] ) && isset( $_REQUEST['paged'] ) ? absint( $_REQUEST['paged'] ) : 1; |
615 $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; |
661 $offset = 0 < $pagenum ? $per_page * ( $pagenum - 1 ) : 0; |
616 |
662 |
617 $args = array( |
663 $args = array( |
618 'child_of' => 0, |
664 'child_of' => 0, |
619 'exclude' => '', |
665 'exclude' => '', |
620 'hide_empty' => false, |
666 'hide_empty' => false, |
621 'hierarchical' => 1, |
667 'hierarchical' => 1, |
622 'include' => '', |
668 'include' => '', |
623 'number' => $per_page, |
669 'number' => $per_page, |
624 'offset' => $offset, |
670 'offset' => $offset, |
625 'order' => 'ASC', |
671 'order' => 'ASC', |
626 'orderby' => 'name', |
672 'orderby' => 'name', |
627 'pad_counts' => false, |
673 'pad_counts' => false, |
628 ); |
674 ); |
629 |
675 |
630 $terms = get_terms( $taxonomy_name, $args ); |
676 $terms = get_terms( $taxonomy_name, $args ); |
631 |
677 |
632 if ( ! $terms || is_wp_error($terms) ) { |
678 if ( ! $terms || is_wp_error( $terms ) ) { |
633 echo '<p>' . __( 'No items.' ) . '</p>'; |
679 echo '<p>' . __( 'No items.' ) . '</p>'; |
634 return; |
680 return; |
635 } |
681 } |
636 |
682 |
637 $num_pages = ceil( wp_count_terms( $taxonomy_name , array_merge( $args, array('number' => '', 'offset' => '') ) ) / $per_page ); |
683 $num_pages = ceil( |
638 |
684 wp_count_terms( |
639 $page_links = paginate_links( array( |
685 $taxonomy_name, |
640 'base' => add_query_arg( |
686 array_merge( |
641 array( |
687 $args, |
642 $taxonomy_name . '-tab' => 'all', |
688 array( |
643 'paged' => '%#%', |
689 'number' => '', |
644 'item-type' => 'taxonomy', |
690 'offset' => '', |
645 'item-object' => $taxonomy_name, |
691 ) |
646 ) |
692 ) |
647 ), |
693 ) / $per_page |
648 'format' => '', |
694 ); |
649 'prev_text' => '<span aria-label="' . esc_attr__( 'Previous page' ) . '">' . __( '«' ) . '</span>', |
695 |
650 'next_text' => '<span aria-label="' . esc_attr__( 'Next page' ) . '">' . __( '»' ) . '</span>', |
696 $page_links = paginate_links( |
651 'before_page_number' => '<span class="screen-reader-text">' . __( 'Page' ) . '</span> ', |
697 array( |
652 'total' => $num_pages, |
698 'base' => add_query_arg( |
653 'current' => $pagenum |
699 array( |
654 )); |
700 $taxonomy_name . '-tab' => 'all', |
|
701 'paged' => '%#%', |
|
702 'item-type' => 'taxonomy', |
|
703 'item-object' => $taxonomy_name, |
|
704 ) |
|
705 ), |
|
706 'format' => '', |
|
707 'prev_text' => '<span aria-label="' . esc_attr__( 'Previous page' ) . '">' . __( '«' ) . '</span>', |
|
708 'next_text' => '<span aria-label="' . esc_attr__( 'Next page' ) . '">' . __( '»' ) . '</span>', |
|
709 'before_page_number' => '<span class="screen-reader-text">' . __( 'Page' ) . '</span> ', |
|
710 'total' => $num_pages, |
|
711 'current' => $pagenum, |
|
712 ) |
|
713 ); |
655 |
714 |
656 $db_fields = false; |
715 $db_fields = false; |
657 if ( is_taxonomy_hierarchical( $taxonomy_name ) ) { |
716 if ( is_taxonomy_hierarchical( $taxonomy_name ) ) { |
658 $db_fields = array( 'parent' => 'parent', 'id' => 'term_id' ); |
717 $db_fields = array( |
|
718 'parent' => 'parent', |
|
719 'id' => 'term_id', |
|
720 ); |
659 } |
721 } |
660 |
722 |
661 $walker = new Walker_Nav_Menu_Checklist( $db_fields ); |
723 $walker = new Walker_Nav_Menu_Checklist( $db_fields ); |
662 |
724 |
663 $current_tab = 'most-used'; |
725 $current_tab = 'most-used'; |
664 if ( isset( $_REQUEST[$taxonomy_name . '-tab'] ) && in_array( $_REQUEST[$taxonomy_name . '-tab'], array('all', 'most-used', 'search') ) ) { |
726 if ( isset( $_REQUEST[ $taxonomy_name . '-tab' ] ) && in_array( $_REQUEST[ $taxonomy_name . '-tab' ], array( 'all', 'most-used', 'search' ) ) ) { |
665 $current_tab = $_REQUEST[$taxonomy_name . '-tab']; |
727 $current_tab = $_REQUEST[ $taxonomy_name . '-tab' ]; |
666 } |
728 } |
667 |
729 |
668 if ( ! empty( $_REQUEST['quick-search-taxonomy-' . $taxonomy_name] ) ) { |
730 if ( ! empty( $_REQUEST[ 'quick-search-taxonomy-' . $taxonomy_name ] ) ) { |
669 $current_tab = 'search'; |
731 $current_tab = 'search'; |
670 } |
732 } |
671 |
733 |
672 $removed_args = array( |
734 $removed_args = array( |
673 'action', |
735 'action', |
676 'menu-item', |
738 'menu-item', |
677 'page-tab', |
739 'page-tab', |
678 '_wpnonce', |
740 '_wpnonce', |
679 ); |
741 ); |
680 |
742 |
|
743 $most_used_url = $view_all_url = $search_url = ''; |
|
744 if ( $nav_menu_selected_id ) { |
|
745 $most_used_url = esc_url( add_query_arg( $taxonomy_name . '-tab', 'most-used', remove_query_arg( $removed_args ) ) ); |
|
746 $view_all_url = esc_url( add_query_arg( $taxonomy_name . '-tab', 'all', remove_query_arg( $removed_args ) ) ); |
|
747 $search_url = esc_url( add_query_arg( $taxonomy_name . '-tab', 'search', remove_query_arg( $removed_args ) ) ); |
|
748 } |
681 ?> |
749 ?> |
682 <div id="taxonomy-<?php echo $taxonomy_name; ?>" class="taxonomydiv"> |
750 <div id="taxonomy-<?php echo $taxonomy_name; ?>" class="taxonomydiv"> |
683 <ul id="taxonomy-<?php echo $taxonomy_name; ?>-tabs" class="taxonomy-tabs add-menu-item-tabs"> |
751 <ul id="taxonomy-<?php echo $taxonomy_name; ?>-tabs" class="taxonomy-tabs add-menu-item-tabs"> |
684 <li <?php echo ( 'most-used' == $current_tab ? ' class="tabs"' : '' ); ?>> |
752 <li <?php echo ( 'most-used' == $current_tab ? ' class="tabs"' : '' ); ?>> |
685 <a class="nav-tab-link" data-type="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-pop" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'most-used', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-pop"> |
753 <a class="nav-tab-link" data-type="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-pop" href="<?php echo $most_used_url; ?>#tabs-panel-<?php echo $taxonomy_name; ?>-pop"> |
686 <?php echo esc_html( $taxonomy->labels->most_used ); ?> |
754 <?php echo esc_html( $taxonomy->labels->most_used ); ?> |
687 </a> |
755 </a> |
688 </li> |
756 </li> |
689 <li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>> |
757 <li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>> |
690 <a class="nav-tab-link" data-type="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-all" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#tabs-panel-<?php echo $taxonomy_name; ?>-all"> |
758 <a class="nav-tab-link" data-type="tabs-panel-<?php echo esc_attr( $taxonomy_name ); ?>-all" href="<?php echo $view_all_url; ?>#tabs-panel-<?php echo $taxonomy_name; ?>-all"> |
691 <?php _e( 'View All' ); ?> |
759 <?php _e( 'View All' ); ?> |
692 </a> |
760 </a> |
693 </li> |
761 </li> |
694 <li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>> |
762 <li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>> |
695 <a class="nav-tab-link" data-type="tabs-panel-search-taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($taxonomy_name . '-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-search-taxonomy-<?php echo $taxonomy_name; ?>"> |
763 <a class="nav-tab-link" data-type="tabs-panel-search-taxonomy-<?php echo esc_attr( $taxonomy_name ); ?>" href="<?php echo $search_url; ?>#tabs-panel-search-taxonomy-<?php echo $taxonomy_name; ?>"> |
696 <?php _e( 'Search' ); ?> |
764 <?php _e( 'Search' ); ?> |
697 </a> |
765 </a> |
698 </li> |
766 </li> |
699 </ul><!-- .taxonomy-tabs --> |
767 </ul><!-- .taxonomy-tabs --> |
700 |
768 |
701 <div id="tabs-panel-<?php echo $taxonomy_name; ?>-pop" class="tabs-panel <?php |
769 <div id="tabs-panel-<?php echo $taxonomy_name; ?>-pop" class="tabs-panel <?php echo ( 'most-used' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); ?> "> |
702 echo ( 'most-used' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); |
|
703 ?>"> |
|
704 <ul id="<?php echo $taxonomy_name; ?>checklist-pop" class="categorychecklist form-no-clear" > |
770 <ul id="<?php echo $taxonomy_name; ?>checklist-pop" class="categorychecklist form-no-clear" > |
705 <?php |
771 <?php |
706 $popular_terms = get_terms( $taxonomy_name, array( 'orderby' => 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false ) ); |
772 $popular_terms = get_terms( |
|
773 $taxonomy_name, |
|
774 array( |
|
775 'orderby' => 'count', |
|
776 'order' => 'DESC', |
|
777 'number' => 10, |
|
778 'hierarchical' => false, |
|
779 ) |
|
780 ); |
707 $args['walker'] = $walker; |
781 $args['walker'] = $walker; |
708 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $popular_terms), 0, (object) $args ); |
782 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $popular_terms ), 0, (object) $args ); |
709 ?> |
783 ?> |
710 </ul> |
784 </ul> |
711 </div><!-- /.tabs-panel --> |
785 </div><!-- /.tabs-panel --> |
712 |
786 |
713 <div id="tabs-panel-<?php echo $taxonomy_name; ?>-all" class="tabs-panel tabs-panel-view-all <?php |
787 <div id="tabs-panel-<?php echo $taxonomy_name; ?>-all" class="tabs-panel tabs-panel-view-all <?php echo ( 'all' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); ?> "> |
714 echo ( 'all' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); |
|
715 ?>"> |
|
716 <?php if ( ! empty( $page_links ) ) : ?> |
788 <?php if ( ! empty( $page_links ) ) : ?> |
717 <div class="add-menu-item-pagelinks"> |
789 <div class="add-menu-item-pagelinks"> |
718 <?php echo $page_links; ?> |
790 <?php echo $page_links; ?> |
719 </div> |
791 </div> |
720 <?php endif; ?> |
792 <?php endif; ?> |
721 <ul id="<?php echo $taxonomy_name; ?>checklist" data-wp-lists="list:<?php echo $taxonomy_name?>" class="categorychecklist form-no-clear"> |
793 <ul id="<?php echo $taxonomy_name; ?>checklist" data-wp-lists="list:<?php echo $taxonomy_name; ?>" class="categorychecklist form-no-clear"> |
722 <?php |
794 <?php |
723 $args['walker'] = $walker; |
795 $args['walker'] = $walker; |
724 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $terms), 0, (object) $args ); |
796 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $terms ), 0, (object) $args ); |
725 ?> |
797 ?> |
726 </ul> |
798 </ul> |
727 <?php if ( ! empty( $page_links ) ) : ?> |
799 <?php if ( ! empty( $page_links ) ) : ?> |
728 <div class="add-menu-item-pagelinks"> |
800 <div class="add-menu-item-pagelinks"> |
729 <?php echo $page_links; ?> |
801 <?php echo $page_links; ?> |
730 </div> |
802 </div> |
731 <?php endif; ?> |
803 <?php endif; ?> |
732 </div><!-- /.tabs-panel --> |
804 </div><!-- /.tabs-panel --> |
733 |
805 |
734 <div class="tabs-panel <?php |
806 <div class="tabs-panel <?php echo ( 'search' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); ?>" id="tabs-panel-search-taxonomy-<?php echo $taxonomy_name; ?>"> |
735 echo ( 'search' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive' ); |
|
736 ?>" id="tabs-panel-search-taxonomy-<?php echo $taxonomy_name; ?>"> |
|
737 <?php |
807 <?php |
738 if ( isset( $_REQUEST['quick-search-taxonomy-' . $taxonomy_name] ) ) { |
808 if ( isset( $_REQUEST[ 'quick-search-taxonomy-' . $taxonomy_name ] ) ) { |
739 $searched = esc_attr( $_REQUEST['quick-search-taxonomy-' . $taxonomy_name] ); |
809 $searched = esc_attr( $_REQUEST[ 'quick-search-taxonomy-' . $taxonomy_name ] ); |
740 $search_results = get_terms( $taxonomy_name, array( 'name__like' => $searched, 'fields' => 'all', 'orderby' => 'count', 'order' => 'DESC', 'hierarchical' => false ) ); |
810 $search_results = get_terms( |
|
811 $taxonomy_name, |
|
812 array( |
|
813 'name__like' => $searched, |
|
814 'fields' => 'all', |
|
815 'orderby' => 'count', |
|
816 'order' => 'DESC', |
|
817 'hierarchical' => false, |
|
818 ) |
|
819 ); |
741 } else { |
820 } else { |
742 $searched = ''; |
821 $searched = ''; |
743 $search_results = array(); |
822 $search_results = array(); |
744 } |
823 } |
745 ?> |
824 ?> |
746 <p class="quick-search-wrap"> |
825 <p class="quick-search-wrap"> |
747 <label for="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" class="screen-reader-text"><?php _e( 'Search' ); ?></label> |
826 <label for="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" class="screen-reader-text"><?php _e( 'Search' ); ?></label> |
748 <input type="search" class="quick-search" value="<?php echo $searched; ?>" name="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" id="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" /> |
827 <input type="search" class="quick-search" value="<?php echo $searched; ?>" name="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" id="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" /> |
749 <span class="spinner"></span> |
828 <span class="spinner"></span> |
750 <?php submit_button( __( 'Search' ), 'small quick-search-submit hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?> |
829 <?php submit_button( __( 'Search' ), 'small quick-search-submit hide-if-js', 'submit', false, array( 'id' => 'submit-quick-search-taxonomy-' . $taxonomy_name ) ); ?> |
751 </p> |
830 </p> |
752 |
831 |
753 <ul id="<?php echo $taxonomy_name; ?>-search-checklist" data-wp-lists="list:<?php echo $taxonomy_name?>" class="categorychecklist form-no-clear"> |
832 <ul id="<?php echo $taxonomy_name; ?>-search-checklist" data-wp-lists="list:<?php echo $taxonomy_name; ?>" class="categorychecklist form-no-clear"> |
754 <?php if ( ! empty( $search_results ) && ! is_wp_error( $search_results ) ) : ?> |
833 <?php if ( ! empty( $search_results ) && ! is_wp_error( $search_results ) ) : ?> |
755 <?php |
834 <?php |
756 $args['walker'] = $walker; |
835 $args['walker'] = $walker; |
757 echo walk_nav_menu_tree( array_map('wp_setup_nav_menu_item', $search_results), 0, (object) $args ); |
836 echo walk_nav_menu_tree( array_map( 'wp_setup_nav_menu_item', $search_results ), 0, (object) $args ); |
758 ?> |
837 ?> |
759 <?php elseif ( is_wp_error( $search_results ) ) : ?> |
838 <?php elseif ( is_wp_error( $search_results ) ) : ?> |
760 <li><?php echo $search_results->get_error_message(); ?></li> |
839 <li><?php echo $search_results->get_error_message(); ?></li> |
761 <?php elseif ( ! empty( $searched ) ) : ?> |
840 <?php elseif ( ! empty( $searched ) ) : ?> |
762 <li><?php _e('No results found.'); ?></li> |
841 <li><?php _e( 'No results found.' ); ?></li> |
763 <?php endif; ?> |
842 <?php endif; ?> |
764 </ul> |
843 </ul> |
765 </div><!-- /.tabs-panel --> |
844 </div><!-- /.tabs-panel --> |
766 |
845 |
767 <p class="button-controls wp-clearfix"> |
846 <p class="button-controls wp-clearfix"> |
768 <span class="list-controls"> |
847 <span class="list-controls"> |
769 <a href="<?php |
848 <a href=" |
770 echo esc_url(add_query_arg( |
849 <?php |
771 array( |
850 echo esc_url( |
772 $taxonomy_name . '-tab' => 'all', |
851 add_query_arg( |
773 'selectall' => 1, |
852 array( |
774 ), |
853 $taxonomy_name . '-tab' => 'all', |
775 remove_query_arg($removed_args) |
854 'selectall' => 1, |
776 )); |
855 ), |
777 ?>#taxonomy-<?php echo $taxonomy_name; ?>" class="select-all aria-button-if-js"><?php _e( 'Select All' ); ?></a> |
856 remove_query_arg( $removed_args ) |
|
857 ) |
|
858 ); |
|
859 ?> |
|
860 #taxonomy-<?php echo $taxonomy_name; ?>" class="select-all aria-button-if-js"><?php _e( 'Select All' ); ?></a> |
778 </span> |
861 </span> |
779 |
862 |
780 <span class="add-to-menu"> |
863 <span class="add-to-menu"> |
781 <input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu' ); ?>" name="add-taxonomy-menu-item" id="<?php echo esc_attr( 'submit-taxonomy-' . $taxonomy_name ); ?>" /> |
864 <input type="submit"<?php wp_nav_menu_disabled_check( $nav_menu_selected_id ); ?> class="button submit-add-to-menu right" value="<?php esc_attr_e( 'Add to Menu' ); ?>" name="add-taxonomy-menu-item" id="<?php echo esc_attr( 'submit-taxonomy-' . $taxonomy_name ); ?>" /> |
782 <span class="spinner"></span> |
865 <span class="spinner"></span> |
831 } else { |
914 } else { |
832 $_actual_db_id = (int) $_item_object_data['menu-item-db-id']; |
915 $_actual_db_id = (int) $_item_object_data['menu-item-db-id']; |
833 } |
916 } |
834 |
917 |
835 $args = array( |
918 $args = array( |
836 'menu-item-db-id' => ( isset( $_item_object_data['menu-item-db-id'] ) ? $_item_object_data['menu-item-db-id'] : '' ), |
919 'menu-item-db-id' => ( isset( $_item_object_data['menu-item-db-id'] ) ? $_item_object_data['menu-item-db-id'] : '' ), |
837 'menu-item-object-id' => ( isset( $_item_object_data['menu-item-object-id'] ) ? $_item_object_data['menu-item-object-id'] : '' ), |
920 'menu-item-object-id' => ( isset( $_item_object_data['menu-item-object-id'] ) ? $_item_object_data['menu-item-object-id'] : '' ), |
838 'menu-item-object' => ( isset( $_item_object_data['menu-item-object'] ) ? $_item_object_data['menu-item-object'] : '' ), |
921 'menu-item-object' => ( isset( $_item_object_data['menu-item-object'] ) ? $_item_object_data['menu-item-object'] : '' ), |
839 'menu-item-parent-id' => ( isset( $_item_object_data['menu-item-parent-id'] ) ? $_item_object_data['menu-item-parent-id'] : '' ), |
922 'menu-item-parent-id' => ( isset( $_item_object_data['menu-item-parent-id'] ) ? $_item_object_data['menu-item-parent-id'] : '' ), |
840 'menu-item-position' => ( isset( $_item_object_data['menu-item-position'] ) ? $_item_object_data['menu-item-position'] : '' ), |
923 'menu-item-position' => ( isset( $_item_object_data['menu-item-position'] ) ? $_item_object_data['menu-item-position'] : '' ), |
841 'menu-item-type' => ( isset( $_item_object_data['menu-item-type'] ) ? $_item_object_data['menu-item-type'] : '' ), |
924 'menu-item-type' => ( isset( $_item_object_data['menu-item-type'] ) ? $_item_object_data['menu-item-type'] : '' ), |
842 'menu-item-title' => ( isset( $_item_object_data['menu-item-title'] ) ? $_item_object_data['menu-item-title'] : '' ), |
925 'menu-item-title' => ( isset( $_item_object_data['menu-item-title'] ) ? $_item_object_data['menu-item-title'] : '' ), |
843 'menu-item-url' => ( isset( $_item_object_data['menu-item-url'] ) ? $_item_object_data['menu-item-url'] : '' ), |
926 'menu-item-url' => ( isset( $_item_object_data['menu-item-url'] ) ? $_item_object_data['menu-item-url'] : '' ), |
844 'menu-item-description' => ( isset( $_item_object_data['menu-item-description'] ) ? $_item_object_data['menu-item-description'] : '' ), |
927 'menu-item-description' => ( isset( $_item_object_data['menu-item-description'] ) ? $_item_object_data['menu-item-description'] : '' ), |
845 'menu-item-attr-title' => ( isset( $_item_object_data['menu-item-attr-title'] ) ? $_item_object_data['menu-item-attr-title'] : '' ), |
928 'menu-item-attr-title' => ( isset( $_item_object_data['menu-item-attr-title'] ) ? $_item_object_data['menu-item-attr-title'] : '' ), |
846 'menu-item-target' => ( isset( $_item_object_data['menu-item-target'] ) ? $_item_object_data['menu-item-target'] : '' ), |
929 'menu-item-target' => ( isset( $_item_object_data['menu-item-target'] ) ? $_item_object_data['menu-item-target'] : '' ), |
847 'menu-item-classes' => ( isset( $_item_object_data['menu-item-classes'] ) ? $_item_object_data['menu-item-classes'] : '' ), |
930 'menu-item-classes' => ( isset( $_item_object_data['menu-item-classes'] ) ? $_item_object_data['menu-item-classes'] : '' ), |
848 'menu-item-xfn' => ( isset( $_item_object_data['menu-item-xfn'] ) ? $_item_object_data['menu-item-xfn'] : '' ), |
931 'menu-item-xfn' => ( isset( $_item_object_data['menu-item-xfn'] ) ? $_item_object_data['menu-item-xfn'] : '' ), |
849 ); |
932 ); |
850 |
933 |
851 $items_saved[] = wp_update_nav_menu_item( $menu_id, $_actual_db_id, $args ); |
934 $items_saved[] = wp_update_nav_menu_item( $menu_id, $_actual_db_id, $args ); |
852 |
935 |
853 } |
936 } |
931 $walker_class_name = apply_filters( 'wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $menu_id ); |
1015 $walker_class_name = apply_filters( 'wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $menu_id ); |
932 |
1016 |
933 if ( class_exists( $walker_class_name ) ) { |
1017 if ( class_exists( $walker_class_name ) ) { |
934 $walker = new $walker_class_name; |
1018 $walker = new $walker_class_name; |
935 } else { |
1019 } else { |
936 return new WP_Error( 'menu_walker_not_exist', |
1020 return new WP_Error( |
|
1021 'menu_walker_not_exist', |
937 /* translators: %s: walker class name */ |
1022 /* translators: %s: walker class name */ |
938 sprintf( __( 'The Walker class named %s does not exist.' ), |
1023 sprintf( |
|
1024 __( 'The Walker class named %s does not exist.' ), |
939 '<strong>' . $walker_class_name . '</strong>' |
1025 '<strong>' . $walker_class_name . '</strong>' |
940 ) |
1026 ) |
941 ); |
1027 ); |
942 } |
1028 } |
943 |
1029 |
944 $some_pending_menu_items = $some_invalid_menu_items = false; |
1030 $some_pending_menu_items = $some_invalid_menu_items = false; |
945 foreach ( (array) $menu_items as $menu_item ) { |
1031 foreach ( (array) $menu_items as $menu_item ) { |
946 if ( isset( $menu_item->post_status ) && 'draft' == $menu_item->post_status ) |
1032 if ( isset( $menu_item->post_status ) && 'draft' == $menu_item->post_status ) { |
947 $some_pending_menu_items = true; |
1033 $some_pending_menu_items = true; |
948 if ( ! empty( $menu_item->_invalid ) ) |
1034 } |
|
1035 if ( ! empty( $menu_item->_invalid ) ) { |
949 $some_invalid_menu_items = true; |
1036 $some_invalid_menu_items = true; |
|
1037 } |
950 } |
1038 } |
951 |
1039 |
952 if ( $some_pending_menu_items ) { |
1040 if ( $some_pending_menu_items ) { |
953 $result .= '<div class="notice notice-info notice-alt inline"><p>' . __( 'Click Save Menu to make pending menu items public.' ) . '</p></div>'; |
1041 $result .= '<div class="notice notice-info notice-alt inline"><p>' . __( 'Click Save Menu to make pending menu items public.' ) . '</p></div>'; |
954 } |
1042 } |
1012 * |
1101 * |
1013 * @param int|string $nav_menu_selected_id (id, slug, or name ) of the currently-selected menu |
1102 * @param int|string $nav_menu_selected_id (id, slug, or name ) of the currently-selected menu |
1014 * @param string $nav_menu_selected_title Title of the currently-selected menu |
1103 * @param string $nav_menu_selected_title Title of the currently-selected menu |
1015 * @return array $messages The menu updated message |
1104 * @return array $messages The menu updated message |
1016 */ |
1105 */ |
1017 function wp_nav_menu_update_menu_items ( $nav_menu_selected_id, $nav_menu_selected_title ) { |
1106 function wp_nav_menu_update_menu_items( $nav_menu_selected_id, $nav_menu_selected_title ) { |
1018 $unsorted_menu_items = wp_get_nav_menu_items( $nav_menu_selected_id, array( 'orderby' => 'ID', 'output' => ARRAY_A, 'output_key' => 'ID', 'post_status' => 'draft,publish' ) ); |
1107 $unsorted_menu_items = wp_get_nav_menu_items( |
1019 $messages = array(); |
1108 $nav_menu_selected_id, |
1020 $menu_items = array(); |
1109 array( |
|
1110 'orderby' => 'ID', |
|
1111 'output' => ARRAY_A, |
|
1112 'output_key' => 'ID', |
|
1113 'post_status' => 'draft,publish', |
|
1114 ) |
|
1115 ); |
|
1116 $messages = array(); |
|
1117 $menu_items = array(); |
1021 // Index menu items by db ID |
1118 // Index menu items by db ID |
1022 foreach ( $unsorted_menu_items as $_item ) |
1119 foreach ( $unsorted_menu_items as $_item ) { |
1023 $menu_items[$_item->db_id] = $_item; |
1120 $menu_items[ $_item->db_id ] = $_item; |
|
1121 } |
1024 |
1122 |
1025 $post_fields = array( |
1123 $post_fields = array( |
1026 'menu-item-db-id', 'menu-item-object-id', 'menu-item-object', |
1124 'menu-item-db-id', |
1027 'menu-item-parent-id', 'menu-item-position', 'menu-item-type', |
1125 'menu-item-object-id', |
1028 'menu-item-title', 'menu-item-url', 'menu-item-description', |
1126 'menu-item-object', |
1029 'menu-item-attr-title', 'menu-item-target', 'menu-item-classes', 'menu-item-xfn' |
1127 'menu-item-parent-id', |
|
1128 'menu-item-position', |
|
1129 'menu-item-type', |
|
1130 'menu-item-title', |
|
1131 'menu-item-url', |
|
1132 'menu-item-description', |
|
1133 'menu-item-attr-title', |
|
1134 'menu-item-target', |
|
1135 'menu-item-classes', |
|
1136 'menu-item-xfn', |
1030 ); |
1137 ); |
1031 |
1138 |
1032 wp_defer_term_counting( true ); |
1139 wp_defer_term_counting( true ); |
1033 // Loop through all the menu items' POST variables |
1140 // Loop through all the menu items' POST variables |
1034 if ( ! empty( $_POST['menu-item-db-id'] ) ) { |
1141 if ( ! empty( $_POST['menu-item-db-id'] ) ) { |
1035 foreach ( (array) $_POST['menu-item-db-id'] as $_key => $k ) { |
1142 foreach ( (array) $_POST['menu-item-db-id'] as $_key => $k ) { |
1036 |
1143 |
1037 // Menu item title can't be blank |
1144 // Menu item title can't be blank |
1038 if ( ! isset( $_POST['menu-item-title'][ $_key ] ) || '' == $_POST['menu-item-title'][ $_key ] ) |
1145 if ( ! isset( $_POST['menu-item-title'][ $_key ] ) || '' == $_POST['menu-item-title'][ $_key ] ) { |
1039 continue; |
1146 continue; |
|
1147 } |
1040 |
1148 |
1041 $args = array(); |
1149 $args = array(); |
1042 foreach ( $post_fields as $field ) |
1150 foreach ( $post_fields as $field ) { |
1043 $args[$field] = isset( $_POST[$field][$_key] ) ? $_POST[$field][$_key] : ''; |
1151 $args[ $field ] = isset( $_POST[ $field ][ $_key ] ) ? $_POST[ $field ][ $_key ] : ''; |
1044 |
1152 } |
1045 $menu_item_db_id = wp_update_nav_menu_item( $nav_menu_selected_id, ( $_POST['menu-item-db-id'][$_key] != $_key ? 0 : $_key ), $args ); |
1153 |
|
1154 $menu_item_db_id = wp_update_nav_menu_item( $nav_menu_selected_id, ( $_POST['menu-item-db-id'][ $_key ] != $_key ? 0 : $_key ), $args ); |
1046 |
1155 |
1047 if ( is_wp_error( $menu_item_db_id ) ) { |
1156 if ( is_wp_error( $menu_item_db_id ) ) { |
1048 $messages[] = '<div id="message" class="error"><p>' . $menu_item_db_id->get_error_message() . '</p></div>'; |
1157 $messages[] = '<div id="message" class="error"><p>' . $menu_item_db_id->get_error_message() . '</p></div>'; |
1049 } else { |
1158 } else { |
1050 unset( $menu_items[ $menu_item_db_id ] ); |
1159 unset( $menu_items[ $menu_item_db_id ] ); |