_wp_ajax_menu_quick_search

The timeline below displays how wordpress function _wp_ajax_menu_quick_search has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.5

/**
 * Prints the appropriate response to a menu quick search.
 *
 * @since 3.0.0
 *
 * @param array $request The unsanitized request values.
 */
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";
                }
            }
        }
    }
}

WordPress Version: 5.1

/**
 * Prints the appropriate response to a menu quick search.
 *
 * @since 3.0.0
 *
 * @param array $request The unsanitized request values.
 */
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']) && in_array($request['response-format'], array('json', 'markup'))) ? $request['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));
            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";
                }
            }
        }
    }
}

WordPress Version: 4.7

/**
 * Prints the appropriate response to a menu quick search.
 *
 * @since 3.0.0
 *
 * @param array $request The unsanitized request values.
 */
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']) && in_array($request['response-format'], array('json', 'markup'))) ? $request['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($matches[2], array('name__like' => $query, 'number' => 10));
            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";
                }
            }
        }
    }
}

WordPress Version: 4.6

/**
 * Prints the appropriate response to a menu quick search.
 *
 * @since 3.0.0
 *
 * @param array $request The unsanitized request values.
 */
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']) && in_array($request['response-format'], array('json', 'markup'))) ? $request['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])) {
            $search_results_query = new WP_Query(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 (!$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($matches[2], array('name__like' => $query, 'number' => 10));
            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";
                }
            }
        }
    }
}

WordPress Version: 4.4

/**
 * Prints the appropriate response to a menu quick search.
 *
 * @since 3.0.0
 *
 * @param array $request The unsanitized request values.
 */
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']) && in_array($request['response-format'], array('json', 'markup'))) ? $request['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])) {
            query_posts(array('posts_per_page' => 10, 'post_type' => $matches[2], 's' => $query));
            if (!have_posts()) {
                return;
            }
            while (have_posts()) {
                the_post();
                if ('markup' == $response_format) {
                    $var_by_ref = get_the_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' => get_the_ID(), 'post_title' => get_the_title(), 'post_type' => get_post_type()));
                    echo "\n";
                }
            }
        } elseif ('taxonomy' == $matches[1]) {
            $terms = get_terms($matches[2], array('name__like' => $query, 'number' => 10));
            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";
                }
            }
        }
    }
}

WordPress Version: 4.1

// Walker_Nav_Menu_Checklist
/**
 * Prints the appropriate response to a menu quick search.
 *
 * @since 3.0.0
 *
 * @param array $request The unsanitized request values.
 */
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']) && in_array($request['response-format'], array('json', 'markup'))) ? $request['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])) {
            query_posts(array('posts_per_page' => 10, 'post_type' => $matches[2], 's' => $query));
            if (!have_posts()) {
                return;
            }
            while (have_posts()) {
                the_post();
                if ('markup' == $response_format) {
                    $var_by_ref = get_the_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' => get_the_ID(), 'post_title' => get_the_title(), 'post_type' => get_post_type()));
                    echo "\n";
                }
            }
        } elseif ('taxonomy' == $matches[1]) {
            $terms = get_terms($matches[2], array('name__like' => $query, 'number' => 10));
            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";
                }
            }
        }
    }
}

WordPress Version: 4.0

// Walker_Nav_Menu_Checklist
/**
 * Prints the appropriate response to a menu quick search.
 *
 * @since 3.0.0
 *
 * @param array $request The unsanitized request values.
 */
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']) && in_array($request['response-format'], array('json', 'markup'))) ? $request['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 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 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])) {
            query_posts(array('posts_per_page' => 10, 'post_type' => $matches[2], 's' => $query));
            if (!have_posts()) {
                return;
            }
            while (have_posts()) {
                the_post();
                if ('markup' == $response_format) {
                    $var_by_ref = get_the_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 json_encode(array('ID' => get_the_ID(), 'post_title' => get_the_title(), 'post_type' => get_post_type()));
                    echo "\n";
                }
            }
        } elseif ('taxonomy' == $matches[1]) {
            $terms = get_terms($matches[2], array('name__like' => $query, 'number' => 10));
            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 json_encode(array('ID' => $term->term_id, 'post_title' => $term->name, 'post_type' => $matches[2]));
                    echo "\n";
                }
            }
        }
    }
}

WordPress Version: 3.7

// Walker_Nav_Menu_Checklist
/**
 * Prints the appropriate response to a menu quick search.
 *
 * @since 3.0.0
 *
 * @param array $request The unsanitized request values.
 */
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']) && in_array($request['response-format'], array('json', 'markup'))) ? $request['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) {
                    $post_obj = get_post($object_id);
                    echo 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 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])) {
            query_posts(array('posts_per_page' => 10, 'post_type' => $matches[2], 's' => $query));
            if (!have_posts()) {
                return;
            }
            while (have_posts()) {
                the_post();
                if ('markup' == $response_format) {
                    $var_by_ref = get_the_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 json_encode(array('ID' => get_the_ID(), 'post_title' => get_the_title(), 'post_type' => get_post_type()));
                    echo "\n";
                }
            }
        } elseif ('taxonomy' == $matches[1]) {
            $terms = get_terms($matches[2], array('name__like' => $query, 'number' => 10));
            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 json_encode(array('ID' => $term->term_id, 'post_title' => $term->name, 'post_type' => $matches[2]));
                    echo "\n";
                }
            }
        }
    }
}