我试图建立一个自定义的WordPress搜索表单。我的搜索页面上的数据将使用GET方法发送到我的结果页面。然后,此数据将与ACF自定义字段中的数据进行匹配。
一切都很顺利,除了一个特殊的领域:
在我的搜索表单的前端,我有一个颜色复选框,发送到我的结果页面的数据在地址栏中看起来像这样:
&colors=blue,green
然后我将其保存到一个变量中,如下所示:
if (isset($_GET['colors'])) {
$mycolors = $_GET['colors'];
}
现在,问题来了,我试图在WordPress中查询这个。每个帖子都有一个ACF复选框字段,我可以在其中选择可用的颜色。我希望这篇文章被查询,如果至少有一个颜色匹配。因此,如果一篇文章在ACF复选框中选择了“蓝色”和“黄色”,并且通过GET接收的数据是“蓝色”和“绿色”,那么应该查询该文章,因为它至少匹配一种颜色。
只要通过GET只接收到一种颜色,以下内容就可以工作
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'my_color_field',
'value' => $mycolors,
'compare' => 'LIKE',
),
) ,
收到多个颜色的那一刻,没有帖子被查询。
我想这是因为$mycolors变量应该是一个数组,所以我试着把它转换成这样的数组:
$mycolorsList = explode(",",$mycolors);
然后我将查询中的变量替换为我创建的新变量。但这会导致这样的错误:
- “致命错误:未捕获的类型错误:addcslashes():参数#1($string)必须是string”* 类型
如果在通过GET接收的数据和通过ACF复选框输入的数据之间找到至少一个颜色匹配,我如何查询帖子?
1条答案
按热度按时间nvbavucw1#
我认为你必须把每一种颜色都作为自己的关系添加进去。