【问题标题】:WordPress multiple Ajax Search URLsWordPress 多个 Ajax 搜索 URL
【发布时间】:2019-06-29 11:58:40
【问题描述】:

我正在使用 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?

提前谢谢你

【问题讨论】:

标签: ajax wordpress search bootstrap-typeahead


【解决方案1】:

感谢@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 个 posttype 之间分开,或多或少就是这样。 使用以下方法调用搜索结果:mysite.com/wp-admin/admin-ajax.php?action=shop_search&pts=product&terms=test

所以如果有人知道如何加快速度,请告诉我! 谢谢你。特别感谢 Bijal - 你让我度过了一个周末!

【讨论】:

    猜你喜欢
    • 2014-06-11
    • 2013-05-28
    • 2019-02-04
    • 2015-06-05
    • 1970-01-01
    • 2013-07-23
    • 2014-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多