WordPress多个Ajax搜索URL

时间:2019-06-29 11:58:40

标签: ajax wordpress search bootstrap-typeahead

我正在使用预输入来增强woocommerce网站上的搜索。因此,我想针对不同的FE-Display拆分产品和内容结果。

我正在使用wp-admin / admin-ajax.php?action = ajax_search&fn = get_ajax_search&terms = [searchterm]接收结果。我试图添加“&posttype = post”或“&posttype = product”或“&posttype = page”之类的内容,以获得不同的结果。

但是看起来,因为它对结果没有影响。我不能在输入字段上限制searchresults的后类型,因为我需要所有这3种结果类型(也许还有更多)。是否有机会获得仅限于posttype的其他ajax搜索URL?

提前谢谢

1 个答案:

答案 0 :(得分:0)

感谢@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(); }

对于我要查询的所有posttype,这可能不是最快的解决方案。如果只需要将2个或3个后继类型分开,就差不多可以了。 使用以下网址调用搜索结果:mysite.com/wp-admin/admin-ajax.php?action=shop_search&pts=product&terms=test

因此,如果有人对如何加快速度有所了解,请告诉我! 谢谢。特别感谢Bijal-您度过了我的周末!