我在WordPress中创建了一个自定义搜索,用于搜索汽车。我可以按制造商和型号搜索,但我希望搜索灵活,并显示基于任何制造商或型号的结果。目前,如果下拉选项中只有制造商和型号是精确的,则搜索将显示结果。例如,如果我从制造商列表中选择宝马,然后从车型中选择E级,我希望搜索显示所有宝马和所有梅赛德斯E级。目前,它不会显示任何结果(这在现实环境中是正确的),但我想更灵活地显示任何宝马汽车和任何E级汽车
这是我的代码。。。
if (!empty($_POST[\'searchfeatures\'])) {
$feature_slugs = $_POST[\'searchfeatures\'];
$args = array(
\'post_type\' => \'listing\',
\'posts_per_page\' => -1,
\'tax_query\' => array(
array(
\'taxonomy\' => \'features\',
\'terms\' => $feature_slugs,
\'field\' => \'slug\',
\'operator\' => \'AND\',
),
),
);
//print_r($args);
$the_query = new WP_Query( $args );
if ( $the_query->have_posts() ) {
//$post = $the_query->post;
while ( $the_query->have_posts() ) {
$the_query->the_post();
$arr_features[] = $post->ID;
}
} else {
$features_status = "No Results";
}
wp_reset_postdata();
}
}
我的搜索仅根据术语是否准确显示结果,而我需要根据所选的任何术语显示结果。我尝试添加“relation”参数并使用“OR”作为其值,但仍然不起作用。有什么想法吗?
谢谢
SO网友:Jacob Peattie
改变operator
到IN
:
array(
\'taxonomy\' => \'features\',
\'terms\' => $feature_slugs,
\'field\' => \'slug\',
\'operator\' => \'IN\',
),
这将查询包含中任何术语的帖子
$feature_slugs
, 而不是所有的术语
AND
做
另外,我可以看到您正在使用POST
此搜索的方法。这种请求在这里是不合适的。当您请求数据时,应使用GET
使用请求和访问数据$_GET[]
.
POST
应仅在将数据发送到要处理的服务器时使用,通常在服务器将创建或更新资源时使用。