WordPress元查询搜索

3

我有一个名为“motor_brand”的自定义字段,它是关于文章的。这个元值被保存为["本田","铃木","川崎","丰田"]

如果我通过meta_query只搜索“本田”,那么所有具有“本田”元值的文章都会出现;如果我想搜索“本田”和“川崎”,那么具有“本田”或“川崎”元值的文章将出现;如果我想搜索“川崎”,“本田”和“丰田”,那么具有“本田”,“川崎”或“丰田”元值的文章将出现。

我已经设置了如下的元查询:

meta_ query = array(
     'relation'=>'OR'
       array(
        meta_key =>'motor_brand'
        value => "honda",
        compare => "LIKE"
        ),
       array(
        meta_key =>'motor_brand'
        value => "kawasaki",
        compare => "LIKE"
        ),
)

这很好,但当我尝试时

meta_ query = array(
     'relation'=>'OR'
       array(
        meta_key =>'motor_brand'
        value => "honda",
        compare => "LIKE"
        ),
       array(
        meta_key =>'motor_brand'
        value => "kawasaki",
        compare => "LIKE"
        ),
       array(
        meta_key =>'motor_brand'
        value => "toyota",
        compare => "LIKE"
        ),
)

无效

我想搜索许多电机品牌


在下面这两种情况中,'relation' => 'OR' 后面都缺少了逗号 , - steven
这段代码仅为示例编写,以便获得我使用正确语法的想法。第一个案例可以正常工作,但是如果多次使用相同的元键进行搜索,则会失败。 - yahya akhtar
“fail” 是什么意思?请提供不起作用的代码和出现的错误信息。 - steven
1个回答

1
也许你想尝试这个:

$meta_query = array(
   array(
       'key' => 'motor_brand',
       'value' => array('honda','kawasaki','toyota'), 
       'compare' => 'IN',
   )
);

它应该生成WHERE motor_brand IN ('honda','kawasaki','toyota'),如果您直接在数据库上执行,它应该会向您显示结果。 编辑 哦,抱歉,我看到你写了

我有一个名为“motor_name”的自定义字段。这些元值保存为["honda","suzuki","kawasaki","toyota"]

如果您以这种方式存储,IN无法正常工作。但是motor_name呢?您的字段名为motor_name,但查询要求motor_brand

感谢您的回复,我很抱歉写错了。元键名称是相同的,都是motor_brand。我已经使用了IN比较器,但是在获取元键值后,我通过自定义PHP应用条件来解决了这个问题。但我认为这不是最好的解决方案。 - yahya akhtar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接