Answers:
与您期望的一样,前几项工作:
= equals
!= does not equal
> greater than
>= greater than or equal to
< less than
<= less than or equal to
LIKE
并且NOT LIKE
是让你在野生卡符号添加,所以你可以有一个元查询SQL操作,看起来像这样:
array(
'key' => 'name',
'value' => 'Pat',
'compare' => 'LIKE'
)
这将返回元值“ name”具有字符串“ Pat”的所有帖子。在这种情况下,“ Pat”,“ Patricia”和“ Patrick”将全部退还给您。有一个非WordPress的教程说明在这里。
%
不需要添加通配符,因为默认情况下会添加通配符,如@Herb在其下面的答案中所述。像这样:$meta_value = '%' . like_escape( $meta_value ) . '%';
-请参阅源。
IN
并NOT IN
选择在给定数组中(或不在给定数组中)的所有匹配项。因此,您可以执行以下操作:
array(
'key' => 'color',
'value' => array('red', 'green', 'blue')
'compare' => 'IN'
)
它将获得所有颜色设置为红色,绿色或蓝色的帖子。使用“ NOT IN”得到相反的结果,即任何值设置为数组中值以外的值的帖子。
为此生成的SQL将如下所示:
SELECT * FROM posts_meta WHERE value IN ("red", "green", "blue")
BETWEEN
并NOT BETWEEN
允许您定义可能正确的值范围,并要求您在meta_query的数组中提供两个值:
array(
'key' => 'price',
'value' => array(20,30)
'compare' => 'BETWEEN'
)
这将为您提供价格在20到30之间的所有帖子。此人深入研究一个带有日期的示例。
NOT EXISTS
就像听起来一样-未设置meta值或将其设置为null值。该查询所需的全部就是键和比较运算符:
array(
'key' => 'price',
'compare' => 'NOT EXISTS'
)
这个人需要查询不存在的元值,并需要它们与他人一起玩。
希望这可以帮助!
meta_query
数组,则键的前缀不应为meta_
。如果您使用$query->meta_key
,$query->meta_value
等,则这些仍应保留前缀。