WordPress несколько поисковых URL-адресов Ajax - PullRequest
0 голосов
/ 29 июня 2019

Я использую typeahead для улучшения поиска на моем сайте woocommerce. Поэтому я хотел бы разделить продукты и результаты контента для разных FE-Display.

Я использую wp-admin / admin-ajax.php? Action = ajax_search & fn = get_ajax_search & Terms = [searchterm] для получения результатов. Я пытаюсь добавить что-то вроде "& posttype = post" или "& posttype = product" или "& posttype = page", чтобы получить другие результаты.

Но, похоже, это никак не повлияет на результаты. Я не могу ограничить типы результатов поиска в поле ввода, так как мне нужны все эти 3 типа результата (и, возможно, больше). Есть ли шанс получить разные URL-адреса поиска ajax, ограниченные типом сообщения?

Заранее спасибо

1 Ответ

0 голосов
/ 30 июня 2019

благодаря @Bijal Patel я нашел решение:

Я добавил новое действие "shop_search" и создал несколько разных поисковых запросов, которые можно вызывать с помощью & pts = posttype так что я могу пойти на разные поиски, как? action = shop_search & pts = product & Terms = test в функциях

add_action( 'wp_ajax_nopriv_shop_search', 'shop_search' );
add_action( 'wp_ajax_shop_search', 'shop_search' );

и затем точно так же, как

function shop_search() {
if ( isset( $_REQUEST['pts'] ) && 'product' == $_REQUEST['pts'] ) { //pts = post type search // looking for Posttype = product
    $product_query = new WP_Query( array(
        's' => $_REQUEST['terms'],
        'post_type' => 'product', // Posttype goes here
        //'posts_per_page' => 10,
        'no_found_rows' => true,
    ) );

    $presults = array( );

    if ( $product_query->get_posts() ) {

        foreach ( $product_query->get_posts() as $the_post ) {

            Do STUFF 

            $presults[] = array(
                'lorem' => $ipsum,
                'foo' => $bar,
            );
        }

    } else {
        $presults[] = __( 'Sorry. No results match your search.', 'wp-typeahead' );
    }

    wp_reset_postdata();
    echo json_encode( $presults );
}

может быть бесконечным, как ...

if ( isset( $_REQUEST['pts'] ) && 'post' == $_REQUEST['pts'] ) { //pts = post type search // Posttype = post
    $product_query = new WP_Query( array(
        's' => $_REQUEST['terms'],
        'post_type' => 'post', // posttype goes here
        //'posts_per_page' => 10,
        'no_found_rows' => true,
    ) );

   $results = array( );
// see above for what to do next
// And Close it all afterwards
    die(); }

Для всех посттипов, которые мне нужно запросить, это может быть не самое быстрое решение. Если вам просто нужно разделить от 2 до 3 посттипов, это будет оно, более или менее. Вызовите результаты поиска, используя: mysite.com/wp-admin/admin-ajax.php?action=shop_search&pts=product&terms=test

Так что, если у кого-то есть идеи, как ускорить процесс, скажите, пожалуйста! Спасибо. И отдельное спасибо Bijal - вы сделали мои выходные!

...