我正在处理的WordPress网站上有一个搜索框,它根据输入到搜索中的关键字数量返回一些零星的重复结果。例如,如果我在框中输入关键字“Green Lake”,它将返回Post A两次,Post B返回两次,Post C返回一次或两次。如果我输入“绿湖湖”(三个关键词),它将返回Post A三次,Post B三次,Post C两次或三次。等等。
我想我已将问题缩小到以下代码。有谁可以指出任何明显的东西?我认为它与$ keywords上的foreach循环有关,但我不知道如何修复它。提前谢谢。
if ( isset( $_REQUEST['keywords'] ) && ! empty( $_REQUEST['keywords'] ) ) {
$filter_posts = [];
$keywords = explode( ' ', strtolower( $_REQUEST['keywords'] ) );
foreach ( $posts as $post ) {
foreach ( $keywords as $keyword ) {
// if the keyword is in the title the don't search the post content
if (
strpos( strtolower( $post->post_title ), $keyword ) !== false
||
strpos( strtolower( $post->post_content ), $keyword ) !== false
) {
$filter_posts[] = $post;
}
}
}
$posts = $filter_posts;
}
wp_send_json_success( json_encode( $posts ) );