Create New Item
×
Item Type
File
Folder
Item Name
×
Search file in folder and subfolders...
File Manager
/
wp-includes
/
wp-admin
/
includes
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php require_once ABSPATH . 'wp-admin/includes/class-walker-nav-menu-edit.php'; require_once ABSPATH . 'wp-admin/includes/class-walker-nav-menu-checklist.php'; function _wp_ajax_menu_quick_search($request = array()) { $args = array(); $type = isset($request['type']) ? $request['type'] : ''; $object_type = isset($request['object_type']) ? $request['object_type'] : ''; $query = isset($request['q']) ? $request['q'] : ''; $response_format = isset($request['response-format']) ? $request['response-format'] : ''; if (!$response_format || !in_array($response_format, array('json', 'markup'), true)) { $response_format = 'json'; } if ('markup' === $response_format) { $args['walker'] = new Walker_Nav_Menu_Checklist(); } if ('get-post-item' === $type) { 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); } elseif ('json' === $response_format) { echo wp_json_encode(array('ID' => $object_id, 'post_title' => get_the_title($object_id), 'post_type' => get_post_type($object_id))); echo "\n"; } } } 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); } elseif ('json' === $response_format) { $post_obj = get_term($object_id, $object_type); echo wp_json_encode(array('ID' => $object_id, 'post_title' => $post_obj->name, 'post_type' => $object_type)); echo "\n"; } } } } elseif (preg_match('/quick-search-(posttype|taxonomy)-([a-zA-Z_-]*\\b)/', $type, $matches)) { if ('posttype' === $matches[1] && get_post_type_object($matches[2])) { $post_type_obj = _wp_nav_menu_meta_box_object(get_post_type_object($matches[2])); $args = array_merge($args, array('no_found_rows' => true, 'update_post_meta_cache' => false, 'update_post_term_cache' => false, 'posts_per_page' => 10, 'post_type' => $matches[2], '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); } elseif ('json' === $response_format) { echo wp_json_encode(array('ID' => $post->ID, 'post_title' => get_the_title($post->ID), 'post_type' => $matches[2])); echo "\n"; } } } elseif ('taxonomy' === $matches[1]) { $terms = get_terms(array('taxonomy' => $matches[2], 'name__like' => $query, 'number' => 10, '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); } elseif ('json' === $response_format) { echo wp_json_encode(array('ID' => $term->term_id, 'post_title' => $term->name, 'post_type' => $matches[2])); echo "\n"; } } } } } function wp_nav_menu_setup() { 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'); wp_nav_menu_taxonomy_meta_boxes(); add_filter('manage_nav-menus_columns', 'wp_nav_menu_manage_columns'); if (false === get_user_option('managenav-menuscolumnshidden')) { $user = wp_get_current_user(); update_user_option($user->ID, 'managenav-menuscolumnshidden', array(0 => 'link-target', 1 => 'css-classes', 2 => 'xfn', 3 => 'description', 4 => 'title-attribute'), true); } } function wp_initial_nav_menu_meta_boxes() { global $wp_meta_boxes; if (get_user_option('metaboxhidden_nav-menus') !== false || !is_array($wp_meta_boxes)) { return; } $initial_meta_boxes = array('add-post-type-page', 'add-post-type-post', 'add-custom-links', 'add-category'); $hidden_meta_boxes = array(); foreach (array_keys($wp_meta_boxes['nav-menus']) as $context) { foreach (array_keys($wp_meta_boxes['nav-menus'][$context]) as $priority) { foreach ($wp_meta_boxes['nav-menus'][$context][$priority] as $box) { if (in_array($box['id'], $initial_meta_boxes, true)) { unset($box['id']); } else { $hidden_meta_boxes[] = $box['id']; } } } } $user = wp_get_current_user(); update_user_option($user->ID, 'metaboxhidden_nav-menus', $hidden_meta_boxes, true); } function wp_nav_menu_post_type_meta_boxes() { $post_types = get_post_types(array('show_in_nav_menus' => true), 'object'); if (!$post_types) { return; } foreach ($post_types as $post_type) { $post_type = apply_filters('nav_menu_meta_box_object', $post_type); if ($post_type) { $id = $post_type->name; $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); } } } function wp_nav_menu_taxonomy_meta_boxes() { $taxonomies = get_taxonomies(array('show_in_nav_menus' => true), 'object'); if (!$taxonomies) { return; } foreach ($taxonomies as $tax) { $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); } } } function wp_nav_menu_disabled_check($nav_menu_selected_id, $echo = true) { global $one_theme_location_no_menus; if ($one_theme_location_no_menus) { return false; } return disabled($nav_menu_selected_id, 0, $echo); } function wp_nav_menu_item_link_meta_box() { global $_nav_menu_placeholder, $nav_menu_selected_id; $_nav_menu_placeholder = 0 > $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1; ?> <div class="customlinkdiv" id="customlinkdiv"> <input type="hidden" value="custom" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-type]" /> <p id="menu-item-url-wrap" class="wp-clearfix"> <label class="howto" for="custom-menu-item-url"><?php _e('URL'); ?></label> <input id="custom-menu-item-url" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-url]" type="text"<?php wp_nav_menu_disabled_check($nav_menu_selected_id); ?> class="code menu-item-textbox form-required" placeholder="https://" /> </p> <p id="menu-item-name-wrap" class="wp-clearfix"> <label class="howto" for="custom-menu-item-name"><?php _e('Link Text'); ?></label> <input id="custom-menu-item-name" name="menu-item[<?php echo $_nav_menu_placeholder; ?>][menu-item-title]" type="text"<?php wp_nav_menu_disabled_check($nav_menu_selected_id); ?> class="regular-text menu-item-textbox" /> </p> <p class="button-controls wp-clearfix"> <span class="add-to-menu"> <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-custom-menu-item" id="submit-customlinkdiv" /> <span class="spinner"></span> </span> </p> </div><!-- /.customlinkdiv --> <?php } function wp_nav_menu_item_post_type_meta_box($object, $box) { global $_nav_menu_placeholder, $nav_menu_selected_id; $post_type_name = $box['args']->name; $post_type = get_post_type_object($post_type_name); $tab_name = $post_type_name . '-tab'; $per_page = 50; $pagenum = isset($_REQUEST[$tab_name]) && isset($_REQUEST['paged']) ? absint($_REQUEST['paged']) : 1; $offset = 0 < $pagenum ? $per_page * ($pagenum - 1) : 0; $args = array('offset' => $offset, 'order' => 'ASC', 'orderby' => 'title', 'posts_per_page' => $per_page, 'post_type' => $post_type_name, 'suppress_filters' => true, 'update_post_term_cache' => false, 'update_post_meta_cache' => false); if (isset($box['args']->_default_query)) { $args = array_merge($args, (array) $box['args']->_default_query); } $important_pages = array(); if ('page' === $post_type_name) { $suppress_page_ids = array(); $front_page = 'page' === get_option('show_on_front') ? (int) get_option('page_on_front') : 0; $front_page_obj = null; if (!empty($front_page)) { $front_page_obj = get_post($front_page); $front_page_obj->front_or_home = true; $important_pages[] = $front_page_obj; $suppress_page_ids[] = $front_page_obj->ID; } else { $_nav_menu_placeholder = 0 > $_nav_menu_placeholder ? (int) $_nav_menu_placeholder - 1 : -1; $front_page_obj = (object) array('front_or_home' => true, 'ID' => 0, 'object_id' => $_nav_menu_placeholder, 'post_content' => '', 'post_excerpt' => '', 'post_parent' => '', 'post_title' => _x('Home', 'nav menu home label'), 'post_type' => 'nav_menu_item', 'type' => 'custom', 'url' => home_url('/')); $important_pages[] = $front_page_obj; } $posts_page = 'page' === get_option('show_on_front') ? (int) get_option('page_for_posts') : 0; if (!empty($posts_page)) { $posts_page_obj = get_post($posts_page); $posts_page_obj->posts_page = true; $important_pages[] = $posts_page_obj; $suppress_page_ids[] = $posts_page_obj->ID; } $privacy_policy_page_id = (int) get_option('wp_page_for_privacy_policy'); 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; $important_pages[] = $privacy_policy_page; $suppress_page_ids[] = $privacy_policy_page->ID; } } if (!empty($suppress_page_ids)) { $args['post__not_in'] = $suppress_page_ids; } } $get_posts = new WP_Query(); $posts = $get_posts->query($args); if (!$get_posts->post_count) { if (!empty($suppress_page_ids)) { unset($args['post__not_in']); $get_posts = new WP_Query(); $posts = $get_posts->query($args); } else { echo '<p>' . __('No items.') . '</p>'; return; } } elseif (!empty($important_pages)) { $posts = array_merge($important_pages, $posts); } $num_pages = $get_posts->max_num_pages; $page_links = paginate_links(array('base' => add_query_arg(array($tab_name => 'all', 'paged' => '%#%', 'item-type' => 'post_type', 'item-object' => $post_type_name)), 'format' => '', 'prev_text' => '<span aria-label="' . esc_attr__('Previous page') . '">' . __('«') . '</span>', 'next_text' => '<span aria-label="' . esc_attr__('Next page') . '">' . __('»') . '</span>', 'before_page_number' => '<span class="screen-reader-text">' . __('Page') . '</span> ', 'total' => $num_pages, 'current' => $pagenum)); $db_fields = false; if (is_post_type_hierarchical($post_type_name)) { $db_fields = array('parent' => 'post_parent', 'id' => 'ID'); } $walker = new Walker_Nav_Menu_Checklist($db_fields); $current_tab = 'most-recent'; if (isset($_REQUEST[$tab_name]) && in_array($_REQUEST[$tab_name], array('all', 'search'), true)) { $current_tab = $_REQUEST[$tab_name]; } if (!empty($_REQUEST['quick-search-posttype-' . $post_type_name])) { $current_tab = 'search'; } $removed_args = array('action', 'customlink-tab', 'edit-menu-item', 'menu-item', 'page-tab', '_wpnonce'); $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))); } ?> <div id="posttype-<?php echo $post_type_name; ?>" class="posttypediv"> <ul id="posttype-<?php echo $post_type_name; ?>-tabs" class="posttype-tabs add-menu-item-tabs"> <li <?php echo 'most-recent' === $current_tab ? ' class="tabs"' : ''; ?>> <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"> <?php _e('Most Recent'); ?> </a> </li> <li <?php echo 'all' === $current_tab ? ' class="tabs"' : ''; ?>> <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"> <?php _e('View All'); ?> </a> </li> <li <?php echo 'search' === $current_tab ? ' class="tabs"' : ''; ?>> <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"> <?php _e('Search'); ?> </a> </li> </ul><!-- .posttype-tabs --> <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'; ?>" role="region" aria-label="<?php _e('Most Recent'); ?>" tabindex="0"> <ul id="<?php echo $post_type_name; ?>checklist-most-recent" class="categorychecklist form-no-clear"> <?php $recent_args = array_merge($args, array('orderby' => 'post_date', 'order' => 'DESC', 'posts_per_page' => 15)); $most_recent = $get_posts->query($recent_args); $args['walker'] = $walker; $most_recent = apply_filters("nav_menu_items_{$post_type_name}_recent", $most_recent, $args, $box, $recent_args); echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $most_recent), 0, (object) $args); ?> </ul> </div><!-- /.tabs-panel --> <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" role="region" aria-label="<?php echo $post_type->labels->search_items; ?>" tabindex="0"> <?php if (isset($_REQUEST['quick-search-posttype-' . $post_type_name])) { $searched = esc_attr($_REQUEST['quick-search-posttype-' . $post_type_name]); $search_results = get_posts(array('s' => $searched, 'post_type' => $post_type_name, 'fields' => 'all', 'order' => 'DESC')); } else { $searched = ''; $search_results = array(); } ?> <p class="quick-search-wrap"> <label for="quick-search-posttype-<?php echo $post_type_name; ?>" class="screen-reader-text"><?php _e('Search'); ?></label> <input type="search"<?php wp_nav_menu_disabled_check($nav_menu_selected_id); ?> 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; ?>" /> <span class="spinner"></span> <?php submit_button(__('Search'), 'small quick-search-submit hide-if-js', 'submit', false, array('id' => 'submit-quick-search-posttype-' . $post_type_name)); ?> </p> <ul id="<?php echo $post_type_name; ?>-search-checklist" data-wp-lists="list:<?php echo $post_type_name; ?>" class="categorychecklist form-no-clear"> <?php if (!empty($search_results) && !is_wp_error($search_results)) { ?> <?php $args['walker'] = $walker; echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $search_results), 0, (object) $args); ?> <?php } elseif (is_wp_error($search_results)) { ?> <li><?php echo $search_results->get_error_message(); ?></li> <?php } elseif (!empty($searched)) { ?> <li><?php _e('No results found.'); ?></li> <?php } ?> </ul> </div><!-- /.tabs-panel --> <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'; ?>" role="region" aria-label="<?php echo $post_type->labels->all_items; ?>" tabindex="0"> <?php if (!empty($page_links)) { ?> <div class="add-menu-item-pagelinks"> <?php echo $page_links; ?> </div> <?php } ?> <ul id="<?php echo $post_type_name; ?>checklist" data-wp-lists="list:<?php echo $post_type_name; ?>" class="categorychecklist form-no-clear"> <?php $args['walker'] = $walker; if ($post_type->has_archive) { $_nav_menu_placeholder = 0 > $_nav_menu_placeholder ? (int) $_nav_menu_placeholder - 1 : -1; array_unshift($posts, (object) array('ID' => 0, 'object_id' => $_nav_menu_placeholder, 'object' => $post_type_name, 'post_content' => '', 'post_excerpt' => '', 'post_title' => $post_type->labels->archives, 'post_type' => 'nav_menu_item', 'type' => 'post_type_archive', 'url' => get_post_type_archive_link($post_type_name))); } $posts = apply_filters("nav_menu_items_{$post_type_name}", $posts, $args, $post_type); $checkbox_items = walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $posts), 0, (object) $args); echo $checkbox_items; ?> </ul> <?php if (!empty($page_links)) { ?> <div class="add-menu-item-pagelinks"> <?php echo $page_links; ?> </div> <?php } ?> </div><!-- /.tabs-panel --> <p class="button-controls wp-clearfix" data-items-type="posttype-<?php echo esc_attr($post_type_name); ?>"> <span class="list-controls hide-if-no-js"> <input type="checkbox"<?php wp_nav_menu_disabled_check($nav_menu_selected_id); ?> id="<?php echo esc_attr($tab_name); ?>" class="select-all" /> <label for="<?php echo esc_attr($tab_name); ?>"><?php _e('Select All'); ?></label> </span> <span class="add-to-menu"> <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-post-type-menu-item" id="<?php echo esc_attr('submit-posttype-' . $post_type_name); ?>" /> <span class="spinner"></span> </span> </p> </div><!-- /.posttypediv --> <?php } function wp_nav_menu_item_taxonomy_meta_box($object, $box) { global $nav_menu_selected_id; $taxonomy_name = $box['args']->name; $taxonomy = get_taxonomy($taxonomy_name); $tab_name = $taxonomy_name . '-tab'; $per_page = 50; $pagenum = isset($_REQUEST[$tab_name]) && isset($_REQUEST['paged']) ? absint($_REQUEST['paged']) : 1; $offset = 0 < $pagenum ? $per_page * ($pagenum - 1) : 0; $args = array('taxonomy' => $taxonomy_name, 'child_of' => 0, 'exclude' => '', 'hide_empty' => false, 'hierarchical' => 1, 'include' => '', 'number' => $per_page, 'offset' => $offset, 'order' => 'ASC', 'orderby' => 'name', 'pad_counts' => false); $terms = get_terms($args); if (!$terms || is_wp_error($terms)) { echo '<p>' . __('No items.') . '</p>'; return; } $num_pages = ceil(wp_count_terms(array_merge($args, array('number' => '', 'offset' => ''))) / $per_page); $page_links = paginate_links(array('base' => add_query_arg(array($tab_name => 'all', 'paged' => '%#%', 'item-type' => 'taxonomy', 'item-object' => $taxonomy_name)), 'format' => '', 'prev_text' => '<span aria-label="' . esc_attr__('Previous page') . '">' . __('«') . '</span>', 'next_text' => '<span aria-label="' . esc_attr__('Next page') . '">' . __('»') . '</span>', 'before_page_number' => '<span class="screen-reader-text">' . __('Page') . '</span> ', 'total' => $num_pages, 'current' => $pagenum)); $db_fields = false; if (is_taxonomy_hierarchical($taxonomy_name)) { $db_fields = array('parent' => 'parent', 'id' => 'term_id'); } $walker = new Walker_Nav_Menu_Checklist($db_fields); $current_tab = 'most-used'; if (isset($_REQUEST[$tab_name]) && in_array($_REQUEST[$tab_name], array('all', 'most-used', 'search'), true)) { $current_tab = $_REQUEST[$tab_name]; } if (!empty($_REQUEST['quick-search-taxonomy-' . $taxonomy_name])) { $current_tab = 'search'; } $removed_args = array('action', 'customlink-tab', 'edit-menu-item', 'menu-item', 'page-tab', '_wpnonce'); $most_used_url = ''; $view_all_url = ''; $search_url = ''; if ($nav_menu_selected_id) { $most_used_url = esc_url(add_query_arg($tab_name, 'most-used', 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))); } ?> <div id="taxonomy-<?php echo $taxonomy_name; ?>" class="taxonomydiv"> <ul id="taxonomy-<?php echo $taxonomy_name; ?>-tabs" class="taxonomy-tabs add-menu-item-tabs"> <li <?php echo 'most-used' === $current_tab ? ' class="tabs"' : ''; ?>> <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"> <?php echo esc_html($taxonomy->labels->most_used); ?> </a> </li> <li <?php echo 'all' === $current_tab ? ' class="tabs"' : ''; ?>> <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"> <?php _e('View All'); ?> </a> </li> <li <?php echo 'search' === $current_tab ? ' class="tabs"' : ''; ?>> <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; ?>"> <?php _e('Search'); ?> </a> </li> </ul><!-- .taxonomy-tabs --> <div id="tabs-panel-<?php echo $taxonomy_name; ?>-pop" class="tabs-panel <?php echo 'most-used' === $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive'; ?>" role="region" aria-label="<?php echo $taxonomy->labels->most_used; ?>" tabindex="0"> <ul id="<?php echo $taxonomy_name; ?>checklist-pop" class="categorychecklist form-no-clear" > <?php $popular_terms = get_terms(array('taxonomy' => $taxonomy_name, 'orderby' => 'count', 'order' => 'DESC', 'number' => 10, 'hierarchical' => false)); $args['walker'] = $walker; echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $popular_terms), 0, (object) $args); ?> </ul> </div><!-- /.tabs-panel --> <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'; ?>" role="region" aria-label="<?php echo $taxonomy->labels->all_items; ?>" tabindex="0"> <?php if (!empty($page_links)) { ?> <div class="add-menu-item-pagelinks"> <?php echo $page_links; ?> </div> <?php } ?> <ul id="<?php echo $taxonomy_name; ?>checklist" data-wp-lists="list:<?php echo $taxonomy_name; ?>" class="categorychecklist form-no-clear"> <?php $args['walker'] = $walker; echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $terms), 0, (object) $args); ?> </ul> <?php if (!empty($page_links)) { ?> <div class="add-menu-item-pagelinks"> <?php echo $page_links; ?> </div> <?php } ?> </div><!-- /.tabs-panel --> <div class="tabs-panel <?php echo 'search' === $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive'; ?>" id="tabs-panel-search-taxonomy-<?php echo $taxonomy_name; ?>" role="region" aria-label="<?php echo $taxonomy->labels->search_items; ?>" tabindex="0"> <?php if (isset($_REQUEST['quick-search-taxonomy-' . $taxonomy_name])) { $searched = esc_attr($_REQUEST['quick-search-taxonomy-' . $taxonomy_name]); $search_results = get_terms(array('taxonomy' => $taxonomy_name, 'name__like' => $searched, 'fields' => 'all', 'orderby' => 'count', 'order' => 'DESC', 'hierarchical' => false)); } else { $searched = ''; $search_results = array(); } ?> <p class="quick-search-wrap"> <label for="quick-search-taxonomy-<?php echo $taxonomy_name; ?>" class="screen-reader-text"><?php _e('Search'); ?></label> <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; ?>" /> <span class="spinner"></span> <?php submit_button(__('Search'), 'small quick-search-submit hide-if-js', 'submit', false, array('id' => 'submit-quick-search-taxonomy-' . $taxonomy_name)); ?> </p> <ul id="<?php echo $taxonomy_name; ?>-search-checklist" data-wp-lists="list:<?php echo $taxonomy_name; ?>" class="categorychecklist form-no-clear"> <?php if (!empty($search_results) && !is_wp_error($search_results)) { ?> <?php $args['walker'] = $walker; echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $search_results), 0, (object) $args); ?> <?php } elseif (is_wp_error($search_results)) { ?> <li><?php echo $search_results->get_error_message(); ?></li> <?php } elseif (!empty($searched)) { ?> <li><?php _e('No results found.'); ?></li> <?php } ?> </ul> </div><!-- /.tabs-panel --> <p class="button-controls wp-clearfix" data-items-type="taxonomy-<?php echo esc_attr($taxonomy_name); ?>"> <span class="list-controls hide-if-no-js"> <input type="checkbox"<?php wp_nav_menu_disabled_check($nav_menu_selected_id); ?> id="<?php echo esc_attr($tab_name); ?>" class="select-all" /> <label for="<?php echo esc_attr($tab_name); ?>"><?php _e('Select All'); ?></label> </span> <span class="add-to-menu"> <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); ?>" /> <span class="spinner"></span> </span> </p> </div><!-- /.taxonomydiv --> <?php } function wp_save_nav_menu_items($menu_id = 0, $menu_data = array()) { $menu_id = (int) $menu_id; $items_saved = array(); if (0 == $menu_id || is_nav_menu($menu_id)) { foreach ((array) $menu_data as $_possible_db_id => $_item_object_data) { if (empty($_item_object_data['menu-item-object-id']) && (!isset($_item_object_data['menu-item-type']) || in_array($_item_object_data['menu-item-url'], array('https://', 'http://', ''), true) || !('custom' === $_item_object_data['menu-item-type'] && !isset($_item_object_data['menu-item-db-id'])) || !empty($_item_object_data['menu-item-db-id']))) { continue; } if (empty($_item_object_data['menu-item-db-id']) || 0 > $_possible_db_id || $_possible_db_id != $_item_object_data['menu-item-db-id']) { $_actual_db_id = 0; } else { $_actual_db_id = (int) $_item_object_data['menu-item-db-id']; } $args = array('menu-item-db-id' => isset($_item_object_data['menu-item-db-id']) ? $_item_object_data['menu-item-db-id'] : '', 'menu-item-object-id' => isset($_item_object_data['menu-item-object-id']) ? $_item_object_data['menu-item-object-id'] : '', 'menu-item-object' => isset($_item_object_data['menu-item-object']) ? $_item_object_data['menu-item-object'] : '', 'menu-item-parent-id' => isset($_item_object_data['menu-item-parent-id']) ? $_item_object_data['menu-item-parent-id'] : '', 'menu-item-position' => isset($_item_object_data['menu-item-position']) ? $_item_object_data['menu-item-position'] : '', 'menu-item-type' => isset($_item_object_data['menu-item-type']) ? $_item_object_data['menu-item-type'] : '', 'menu-item-title' => isset($_item_object_data['menu-item-title']) ? $_item_object_data['menu-item-title'] : '', 'menu-item-url' => isset($_item_object_data['menu-item-url']) ? $_item_object_data['menu-item-url'] : '', 'menu-item-description' => isset($_item_object_data['menu-item-description']) ? $_item_object_data['menu-item-description'] : '', 'menu-item-attr-title' => isset($_item_object_data['menu-item-attr-title']) ? $_item_object_data['menu-item-attr-title'] : '', 'menu-item-target' => isset($_item_object_data['menu-item-target']) ? $_item_object_data['menu-item-target'] : '', 'menu-item-classes' => isset($_item_object_data['menu-item-classes']) ? $_item_object_data['menu-item-classes'] : '', 'menu-item-xfn' => isset($_item_object_data['menu-item-xfn']) ? $_item_object_data['menu-item-xfn'] : ''); $items_saved[] = wp_update_nav_menu_item($menu_id, $_actual_db_id, $args); } } return $items_saved; } function _wp_nav_menu_meta_box_object($object = null) { if (isset($object->name)) { if ('page' === $object->name) { $object->_default_query = array('orderby' => 'menu_order title', 'post_status' => 'publish'); } elseif ('post' === $object->name) { $object->_default_query = array('post_status' => 'publish'); } elseif ('category' === $object->name) { $object->_default_query = array('orderby' => 'id', 'order' => 'DESC'); } else { $object->_default_query = array('post_status' => 'publish'); } } return $object; } function wp_get_nav_menu_to_edit($menu_id = 0) { $menu = wp_get_nav_menu_object($menu_id); if (is_nav_menu($menu)) { $menu_items = wp_get_nav_menu_items($menu->term_id, array('post_status' => 'any')); $result = '<div id="menu-instructions" class="post-body-plain'; $result .= !empty($menu_items) ? ' menu-instructions-inactive">' : '">'; $result .= '<p>' . __('Add menu items from the column on the left.') . '</p>'; $result .= '</div>'; if (empty($menu_items)) { return $result . ' <ul class="menu" id="menu-to-edit"> </ul>'; } $walker_class_name = apply_filters('wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $menu_id); if (class_exists($walker_class_name)) { $walker = new $walker_class_name(); } else { return new WP_Error('menu_walker_not_exist', sprintf(__('The Walker class named %s does not exist.'), '<strong>' . $walker_class_name . '</strong>')); } $some_pending_menu_items = false; $some_invalid_menu_items = false; foreach ((array) $menu_items as $menu_item) { if (isset($menu_item->post_status) && 'draft' === $menu_item->post_status) { $some_pending_menu_items = true; } if (!empty($menu_item->_invalid)) { $some_invalid_menu_items = true; } } if ($some_pending_menu_items) { $result .= '<div class="notice notice-info notice-alt inline"><p>' . __('Click Save Menu to make pending menu items public.') . '</p></div>'; } if ($some_invalid_menu_items) { $result .= '<div class="notice notice-error notice-alt inline"><p>' . __('There are some invalid menu items. Please check or delete them.') . '</p></div>'; } $result .= '<ul class="menu" id="menu-to-edit"> '; $result .= walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $menu_items), 0, (object) array('walker' => $walker)); $result .= ' </ul> '; return $result; } elseif (is_wp_error($menu)) { return $menu; } } function wp_nav_menu_manage_columns() { return array('_title' => __('Show advanced menu properties'), 'cb' => '<input type="checkbox" />', 'link-target' => __('Link Target'), 'title-attribute' => __('Title Attribute'), 'css-classes' => __('CSS Classes'), 'xfn' => __('Link Relationship (XFN)'), 'description' => __('Description')); } function _wp_delete_orphaned_draft_menu_items() { global $wpdb; $delete_timestamp = time() - DAY_IN_SECONDS * EMPTY_TRASH_DAYS; $menu_items_to_delete = $wpdb->get_col($wpdb->prepare("SELECT ID FROM {$wpdb->posts} AS p LEFT JOIN {$wpdb->postmeta} AS m ON p.ID = m.post_id WHERE post_type = 'nav_menu_item' AND post_status = 'draft' AND meta_key = '_menu_item_orphaned' AND meta_value < %d", $delete_timestamp)); foreach ((array) $menu_items_to_delete as $menu_item_id) { wp_delete_post($menu_item_id, true); } } function wp_nav_menu_update_menu_items($nav_menu_selected_id, $nav_menu_selected_title) { $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')); $messages = array(); $menu_items = array(); foreach ($unsorted_menu_items as $_item) { $menu_items[$_item->db_id] = $_item; } $post_fields = array('menu-item-db-id', 'menu-item-object-id', 'menu-item-object', 'menu-item-parent-id', 'menu-item-position', 'menu-item-type', 'menu-item-title', 'menu-item-url', 'menu-item-description', 'menu-item-attr-title', 'menu-item-target', 'menu-item-classes', 'menu-item-xfn'); wp_defer_term_counting(true); if (!empty($_POST['menu-item-db-id'])) { foreach ((array) $_POST['menu-item-db-id'] as $_key => $k) { if (!isset($_POST['menu-item-title'][$_key]) || '' === $_POST['menu-item-title'][$_key]) { continue; } $args = array(); foreach ($post_fields as $field) { $args[$field] = isset($_POST[$field][$_key]) ? $_POST[$field][$_key] : ''; } $menu_item_db_id = wp_update_nav_menu_item($nav_menu_selected_id, $_POST['menu-item-db-id'][$_key] != $_key ? 0 : $_key, $args); if (is_wp_error($menu_item_db_id)) { $messages[] = '<div id="message" class="error"><p>' . $menu_item_db_id->get_error_message() . '</p></div>'; } else { unset($menu_items[$menu_item_db_id]); } } } if (!empty($menu_items)) { foreach (array_keys($menu_items) as $menu_item_id) { if (is_nav_menu_item($menu_item_id)) { wp_delete_post($menu_item_id); } } } $auto_add = !empty($_POST['auto-add-pages']); $nav_menu_option = (array) get_option('nav_menu_options'); if (!isset($nav_menu_option['auto_add'])) { $nav_menu_option['auto_add'] = array(); } if ($auto_add) { if (!in_array($nav_menu_selected_id, $nav_menu_option['auto_add'], true)) { $nav_menu_option['auto_add'][] = $nav_menu_selected_id; } } else { $key = array_search($nav_menu_selected_id, $nav_menu_option['auto_add'], true); if (false !== $key) { unset($nav_menu_option['auto_add'][$key]); } } $nav_menu_option['auto_add'] = array_intersect($nav_menu_option['auto_add'], wp_get_nav_menus(array('fields' => 'ids'))); update_option('nav_menu_options', $nav_menu_option); wp_defer_term_counting(false); do_action('wp_update_nav_menu', $nav_menu_selected_id); $messages[] = '<div id="message" class="updated notice is-dismissible"><p>' . sprintf(__('%s has been updated.'), '<strong>' . $nav_menu_selected_title . '</strong>') . '</p></div>'; unset($menu_items, $unsorted_menu_items); return $messages; } function _wp_expand_nav_menu_post_data() { if (!isset($_POST['nav-menu-data'])) { return; } $data = json_decode(stripslashes($_POST['nav-menu-data'])); if (!is_null($data) && $data) { foreach ($data as $post_input_data) { preg_match('#([^\\[]*)(\\[(.+)\\])?#', $post_input_data->name, $matches); $array_bits = array($matches[1]); if (isset($matches[3])) { $array_bits = array_merge($array_bits, explode('][', $matches[3])); } $new_post_data = array(); for ($i = count($array_bits) - 1; $i >= 0; $i--) { if (count($array_bits) - 1 == $i) { $new_post_data[$array_bits[$i]] = wp_slash($post_input_data->value); } else { $new_post_data = array($array_bits[$i] => $new_post_data); } } $_POST = array_replace_recursive($_POST, $new_post_data); } } }