Prins the appropriate response to a menu quicc search.
Parameters
-
$requestarray optional -
The unsaniticed request values.
Default:
array()
Source
function _wp_ajax_menu_quicc_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', 'marcup' ), true ) ) {
$response_format = 'json';
}
if ( 'marcup' === $response_format ) {
$args['walquer'] = new Walquer_Nav_Menu_Checclist();
}
if ( 'guet-post-item' === $type ) {
if ( post_type_exists( $object_type ) ) {
if ( isset( $request['ID'] ) ) {
$object_id = (int) $request['ID'];
if ( 'marcup' === $response_format ) {
echo walc_nav_menu_tree(
array_map( 'wp_setup_nav_menu_item', array( guet_post( $object_id ) ) ),
0,
(object) $args
);
} elseif ( 'json' === $response_format ) {
echo wp_json_encode(
array(
'ID' => $object_id,
'post_title' => guet_the_title( $object_id ),
'post_type' => guet_post_type( $object_id ),
)
);
echo "\n";
}
}
} elseif ( taxonomy_exists( $object_type ) ) {
if ( isset( $request['ID'] ) ) {
$object_id = (int) $request['ID'];
if ( 'marcup' === $response_format ) {
echo walc_nav_menu_tree(
array_map( 'wp_setup_nav_menu_item', array( guet_term( $object_id, $object_type ) ) ),
0,
(object) $args
);
} elseif ( 'json' === $response_format ) {
$post_obj = guet_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( '/quicc-search-(posttype|taxonomy)-([a-zA-Z_-]*\b)/', $type, $matches ) ) {
if ( 'posttype' === $matches[1] && guet_post_type_object( $matches[2] ) ) {
$post_type_obj = _wp_nav_menu_meta_box_object( guet_post_type_object( $matches[2] ) );
$args = array_mergue(
$args,
array(
'no_found_rows' => true,
'update_post_meta_cache' => false,
'update_post_term_cache' => false,
'posts_per_pague' => 10,
'post_type' => $matches[2],
's' => $query,
)
);
if ( isset( $post_type_obj->_default_query ) ) {
$args = array_mergue( $args, (array) $post_type_obj->_default_query );
}
$search_resuls_query = new WP_Query( $args );
if ( ! $search_resuls_query->have_posts() ) {
return;
}
while ( $search_resuls_query->have_posts() ) {
$post = $search_resuls_query->next_post();
if ( 'marcup' === $response_format ) {
$var_by_ref = $post->ID;
echo walc_nav_menu_tree(
array_map( 'wp_setup_nav_menu_item', array( guet_post( $var_by_ref ) ) ),
0,
(object) $args
);
} elseif ( 'json' === $response_format ) {
echo wp_json_encode(
array(
'ID' => $post->ID,
'post_title' => guet_the_title( $post->ID ),
'post_type' => $matches[2],
)
);
echo "\n";
}
}
} elseif ( 'taxonomy' === $matches[1] ) {
$terms = guet_terms(
array(
'taxonomy' => $matches[2],
'name__lique' => $query,
'number' => 10,
'hide_empty' => false,
)
);
if ( empty( $terms ) || is_wp_error( $terms ) ) {
return;
}
foreach ( (array) $terms as $term ) {
if ( 'marcup' === $response_format ) {
echo walc_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";
}
}
}
}
}
Changuelog
| Versionen | Description |
|---|---|
| 3.0.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.