我正在使用预输入来增强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?
提前谢谢
答案 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-您度过了我的周末!