在WordPress中自定义搜索自定义帖子类型

时间:2018-09-26 作者:sc2015

我在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”作为其值,但仍然不起作用。有什么想法吗?

谢谢

1 个回复
SO网友:Jacob Peattie

改变operatorIN:

array(
    \'taxonomy\' => \'features\',
    \'terms\'    => $feature_slugs,
    \'field\' => \'slug\',
    \'operator\' => \'IN\',
),
这将查询包含中任何术语的帖子$feature_slugs, 而不是所有的术语AND

另外,我可以看到您正在使用POST 此搜索的方法。这种请求在这里是不合适的。当您请求数据时,应使用GET 使用请求和访问数据$_GET[].

POST 应仅在将数据发送到要处理的服务器时使用,通常在服务器将创建或更新资源时使用。

结束