WordPress 多个 Ajax 搜索 URL
WordPress multiple Ajax Search URLs
我正在使用 typeahead 来增强我的 woocommerce 网站上的搜索。因此,我想为不同的 FE-Display 拆分产品和内容结果。
我正在使用 wp-admin/admin-ajax.php?action=ajax_search&fn=get_ajax_search&terms=[searchterm] 来接收结果。我试图添加类似“&posttype=post”或“&posttype=product”或“&posttype=page”的内容以获得不同的结果。
不过好像对结果没有影响。我无法限制输入字段中的搜索结果 post 类型,因为我需要所有这 3 种结果类型(可能还有更多)。是否有机会获得限于 post 类型的不同 ajax- 搜索 URL?
提前致谢
感谢@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 个 posttypes 之间分开,或多或少就是这样。
使用以下方式调用搜索结果:mysite.com/wp-admin/admin-ajax.php?action=shop_search&pts=product&terms=test
所以如果有人知道如何加快速度,请告诉我!
谢谢你。特别感谢 Bijal - 你让我度过了一个愉快的周末!
我正在使用 typeahead 来增强我的 woocommerce 网站上的搜索。因此,我想为不同的 FE-Display 拆分产品和内容结果。
我正在使用 wp-admin/admin-ajax.php?action=ajax_search&fn=get_ajax_search&terms=[searchterm] 来接收结果。我试图添加类似“&posttype=post”或“&posttype=product”或“&posttype=page”的内容以获得不同的结果。
不过好像对结果没有影响。我无法限制输入字段中的搜索结果 post 类型,因为我需要所有这 3 种结果类型(可能还有更多)。是否有机会获得限于 post 类型的不同 ajax- 搜索 URL?
提前致谢
感谢@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 个 posttypes 之间分开,或多或少就是这样。 使用以下方式调用搜索结果:mysite.com/wp-admin/admin-ajax.php?action=shop_search&pts=product&terms=test
所以如果有人知道如何加快速度,请告诉我! 谢谢你。特别感谢 Bijal - 你让我度过了一个愉快的周末!