按多个元值对Get_Terms进行排序

时间:2017-06-02 作者:Jabel Márquez

我正在尝试获取自定义分类法的所有术语(ediciones) 但由两个ACF字段排序:edicion_ano (年份字段)和edicion_numero (数字字段)。第一个应按年份排序,第二个应按数字字段排序。

我从ACF(5.5.X)了解到,可以使用meta_query 我正在使用版本5.5.14。

在新版本的ACF(5.5.x)中,现在使用术语元,WP允许对术语进行元查询,因此不再需要这些解决方法。(source)

现在我正在使用以下代码:

$args = array(
    \'taxonomy\' => \'ediciones\',
    \'hide_empty\' => false,
    \'meta_query\' => array(
        \'relation\' => \'AND\',
        \'edicion_ano_param\' => array(
            \'key\' => \'edicion_ano\',
            \'compare\' => \'EXISTS\',
        ),
        \'edicion_numero_param\' => array(
            \'key\' => \'edicion_numero\',
            \'compare\' => \'EXISTS\',
        ), 
    ),
    \'orderby\' => array( 
        \'edicion_ano_param\' => \'DESC\',
        \'edicion_numero_param\' => \'DESC\',
    ),
);

$ediciones = get_terms($args);
使用相同的meta_query 但是有get_posts() 它工作得很好。实际上与get_terms() 给我一个警告,但我不知道为什么:Warning: strtolower() expects parameter 1 to be string, array given in .../class-wp-term-query.php on line 824

如果我试着订购one field 适用于此代码:

$args = array(
    \'taxonomy\' => \'ediciones\',
    \'hide_empty\' => false,
    \'meta_key\' => \'edicion_ano\',
    \'orderby\' => \'meta_value\',
    \'order\' => \'DESC\',
);

$ediciones = get_terms($args);
但我需要按两个字段排序。知道我做错了什么吗?知道我需要什么吗?

谢谢

1 个回复
SO网友:Picard

那是因为get_terms() 不接受数组类型作为“orderby”参数的值。文档中说明了此参数:

\'orderby\'

(字符串)字段,以按其排序术语。接受术语字段(\'name\',\'slug\',\'term\\u group\',\'term\\u id\',\'id\',\'description\'),\'count\'用于术语分类计数,\'include\'用于匹配$include param的\'order\',\'meta\\u value\',\'meta\\u num\',\'meta\\u key的值,$meta\\u query的数组键,或\'none\'用于省略order BY子句。默认为“name”。

您可以在这里看到原始文档page

结束

相关推荐

Order By Multiple Meta Fields

我有两个自定义字段:meta_key1 是布尔值(0 或1). meta_key2 是日期值-20150623 例如</不是全部meta_key2 字段具有显式值。看起来他们被视为一个空字符串\'\'. 我想找到所有有meta_key2 (日期)值大于今天或具有meta_key1 值为true。这是我希望它们显示的顺序。key2.meta_value >= today ASCkey1.meta_value = TRUE ordered by date ASC (先给出日期的)</问题的一

按多个元值对Get_Terms进行排序 - 小码农CODE - 行之有效找到问题解决它

按多个元值对Get_Terms进行排序

时间:2017-06-02 作者:Jabel Márquez

我正在尝试获取自定义分类法的所有术语(ediciones) 但由两个ACF字段排序:edicion_ano (年份字段)和edicion_numero (数字字段)。第一个应按年份排序,第二个应按数字字段排序。

我从ACF(5.5.X)了解到,可以使用meta_query 我正在使用版本5.5.14。

在新版本的ACF(5.5.x)中,现在使用术语元,WP允许对术语进行元查询,因此不再需要这些解决方法。(source)

现在我正在使用以下代码:

$args = array(
    \'taxonomy\' => \'ediciones\',
    \'hide_empty\' => false,
    \'meta_query\' => array(
        \'relation\' => \'AND\',
        \'edicion_ano_param\' => array(
            \'key\' => \'edicion_ano\',
            \'compare\' => \'EXISTS\',
        ),
        \'edicion_numero_param\' => array(
            \'key\' => \'edicion_numero\',
            \'compare\' => \'EXISTS\',
        ), 
    ),
    \'orderby\' => array( 
        \'edicion_ano_param\' => \'DESC\',
        \'edicion_numero_param\' => \'DESC\',
    ),
);

$ediciones = get_terms($args);
使用相同的meta_query 但是有get_posts() 它工作得很好。实际上与get_terms() 给我一个警告,但我不知道为什么:Warning: strtolower() expects parameter 1 to be string, array given in .../class-wp-term-query.php on line 824

如果我试着订购one field 适用于此代码:

$args = array(
    \'taxonomy\' => \'ediciones\',
    \'hide_empty\' => false,
    \'meta_key\' => \'edicion_ano\',
    \'orderby\' => \'meta_value\',
    \'order\' => \'DESC\',
);

$ediciones = get_terms($args);
但我需要按两个字段排序。知道我做错了什么吗?知道我需要什么吗?

谢谢

1 个回复
SO网友:Picard

那是因为get_terms() 不接受数组类型作为“orderby”参数的值。文档中说明了此参数:

\'orderby\'

(字符串)字段,以按其排序术语。接受术语字段(\'name\',\'slug\',\'term\\u group\',\'term\\u id\',\'id\',\'description\'),\'count\'用于术语分类计数,\'include\'用于匹配$include param的\'order\',\'meta\\u value\',\'meta\\u num\',\'meta\\u key的值,$meta\\u query的数组键,或\'none\'用于省略order BY子句。默认为“name”。

您可以在这里看到原始文档page

相关推荐

WooCommerce:如何在Order元数据对象中获得具有自定义ID的订单?

因为一个项目,我需要你的帮助。我找了很多,但找不到解决办法。我正在尝试编辑一个名为woocommerce\\u account\\u订单我已经添加了该字段mycustom\\u id到订单元数据对象,因为我需要在字段mycustom\\u id中获取当前登录用户的所有订单:(mycustom\\u id=current\\u user\\u id())检查customer 应该留下来。我只需要再加上这个current_user_id 检查这应该保持原样:\'客户\'=>获取当前用户id()。这是我的