正如你在the documentation, 也不leasenum
也不是任意元键的有效值orderby
.
如果要按单个元值排序,应设置meta_key
然后你可以设置orderby
到meta_key
(或meta_value_num
如果值是数字),则按该键排序。文档中也对此进行了描述:
请注意meta_key=keyname
查询中也必须存在。还要注意的是,排序将按字母顺序进行,这对于字符串(即单词)来说是很好的,但对于数字(例如1、3、34、4、56、6等,而不是您自然期望的1、3、4、6、34、56等)来说可能是意外的。使用meta_value_num
而不是数值。您还可以指定meta_type
如果要将元值强制转换为特定类型。可能的值为“NUMERIC”、“BINARY”、“CHAR”、“DATE”、“DATETIME”、“DECIMAL”、“SIGNED”、“TIME”、“UNSIGNED”,与中相同$meta_query
.使用“meta\\u type”时,也可以相应地使用“meta\\u value\\u*”。例如,当使用DATETIME作为“meta\\u type”时,可以使用“meta\\u value\\u DATETIME”来定义订单结构。
您当前已在使用meta_key
属性按值筛选结果,但可以将其移动到meta_query
以便您可以使用meta_key
用于排序:
$args = array(
\'post_type\' => \'shop\',
\'posts_per_page\' => -1,
\'order\' => \'ASC\',
\'orderby\' => \'meta_value_num\',
\'meta_key\' => \'leasenum\',
\'meta_query\' => array(
array(
\'key\' => \'mall\',
\'value\' => $getvalue,
),
),
);
$the_query = new WP_Query( $args );