<?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') . '">' . __('&laquo;') . '</span>', 'next_text' => '<span aria-label="' . esc_attr__('Next page') . '">' . __('&raquo;') . '</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') . '">' . __('&laquo;') . '</span>', 'next_text' => '<span aria-label="' . esc_attr__('Next page') . '">' . __('&raquo;') . '</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);
        }
    }
}