WP_QUERY ORDERBY不适用于META_KEY

时间:2021-11-05 作者:Muffin

我想在我的档案馆按“leasenum”订购这篇文章。php。我想过滤特定的“商城”。结果集正确,但顺序错误。只有在删除“meta\\u键”时,orderby才起作用meta\\u值\'。

$args = array(
        \'post_type\'     => \'shop\',
        \'meta_key\'      => \'mall\',
        \'meta_value\'    =>   $getvalue,
        \'posts_per_page\'=>-1,
        \'order\'       => \'ASC\',
        \'orderby\'     => \'leasenum\',
    );
    $the_query = new WP_Query( $args );
如何使meta\\u键和;订货单位工程?

1 个回复
SO网友:Jacob Peattie

正如你在the documentation, 也不leasenum 也不是任意元键的有效值orderby.

如果要按单个元值排序,应设置meta_key 然后你可以设置orderbymeta_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 );