_wp_ajax_menu_quick_search() – Prints the appropriate response to a menu quick search.

You appear to be a bot. Output may be restricted

Description

Prints the appropriate response to a menu quick search.

Usage

_wp_ajax_menu_quick_search( $request );

Parameters

$request
( array ) optional – The unsanitized request values.

Returns

void

Source

File name: wordpress/wp-admin/includes/nav-menu.php
Lines:

1 to 100 of 140
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],
 

 View on GitHub View on Trac