平时我们使用遇到很多查询是否含有某个自定义字段的文章,而且实现也比较简单,但是如果需要搜索查询同时满足两个自定义字段条件的文章可能就相对复杂一点,那么应该如何操作呢?
比如boke123导航收录的VIP网站本身就有一个vip自定义字段,另外如果VIP网站出现问题了还会增加一个vipyc的自定义字段。那么现在我想要搜索查询没有异常的VIP网站应该怎么做呢?具体如下:
$args = array(
'showposts' => 10,
'meta_key' => 'vip',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => 'vip',
'compare' => 'EXISTS',
),
array(
'key' => 'vipyc',
'compare' => 'NOT EXISTS',
),
),
'orderby' => 'rand',
);
以上代码的意思就是随机输出存在vip自定义字段但是不存在vipyc自定义字段的10篇文章。
如果是两个自定义字段都要排序的话,那么上述代第15行代码可以修改为:
'orderby' => array(
'第一个自定义字段' => 'ASC',
'第二个自定义字段' => 'DESC',
)
如果是三个自定义字段组合的,只需要将上述代码中的第10~13行代码修改为:
array(
'relation' => 'AND',
array(
'key' => 'vipyc',
'compare' => 'NOT EXISTS'
),
array(
'key' => '第三个自定义字段',
'value' => '第三个自定义字段的值',
'compare' => '='
)
)
其中relation可以是AND,也可以是OR;compare的值可以是 =、!=、>、>=、<、<=、LIKE、NOT LIKE、IN、NOT IN、BETWEEN、NOT BETWEEN、EXISTS、NOT EXISTS。
如果是很多个自定义字段组合,只需要记得将最后一个参数变成组合参数就可以了,具体请参考三个自定义字段的写法。