【问题标题】:get_terms ignores orderby argument on WooCommerce product categoriesget_terms 忽略 WooCommerce 产品类别的 orderby 参数
【发布时间】:2019-04-23 12:44:00
【问题描述】:

我使用以下函数列出产品类别并按名称排序。自从我上次将 WooCommerce 从 3.5.7 更新到 3.6.1 之后,这不再起作用了。

没关系,我写什么到orderby。我猜这些术语是按 id 排序的,与后端的顺序相同。

我之前遇到过这个问题,但后来我添加了'menu_order' => false 并且它起作用了。但是自从更新后就没有任何效果了。

$terms = get_terms( 'product_cat', array(
       'orderby'           => 'name', 
       'order'             => 'ASC',
       'parent' => 2063,
       'menu_order' => false,
       'suppress_filter' => false
   ) );

我也尝试过切换主题但没有成功。 欢迎任何帮助。

我使用 WordPress 版本 5.1.1 和 Storefront 主题版本 2.4.5。

【问题讨论】:

    标签: php wordpress woocommerce custom-taxonomy taxonomy-terms


    【解决方案1】:

    更新 2 - 已解决

    在我报告了这个issue on Github WooCommerce之后,这显然是一个在调用get_terms()函数时影响orderby参数的错误。它现已获得批准并patched

    Woocommerce 更新 3.6.2 解决了该问题


    首先,自 WordPress 4.5 以来,分类法应通过 get_terms() 函数的参数数组中的“分类法”参数传递。

    您不能使用'menu_order''suppress_filter' 参数,因为它们未为WP_Term_Query 类定义。您将使用'orderby' => 'order',,而不是'menu_order'


    现在,WordPress get_terms() 函数的允许参数列在 WP_Term_Query __construct() 中。

    所以是的,您可以使用 "orderby" 参数:

    • 默认值设置为name
    • 接受术语字段(nameslugterm_groupterm_ididdescriptionparent)、count 用于术语分类计数、@987654 匹配$include 参数的orderslug__in 匹配$slug 参数的ordermeta_valuemeta_value_num,$meta_key 的值,$meta_query 的数组键,或none省略 ORDER BY 子句。

    所以你的代码应该是这样的:

    $terms = get_terms( array(
        'taxonomy' => 'product_cat',
        // 'orderby'  => 'name', // <=== Default orderby is already 'name'
        'order'    => 'ASC',
        'parent'   => 2063,
    ) );
    

    经过测试和

    【讨论】:

    • 谢谢!但这无济于事,因为我正在使用 WooCommerce 并且正如我所写的那样,它不适用于较新的版本。 WooCommerce 的默认分类顺序不是名称,而是 menu_order。
    • @nuriye 不抱歉,它是“order”而不是“menu_order”……请参阅分类文档(与发布数据或发布元数据不同)。我只是尽我所能提供帮助……但这是 WooCommerce 上的一个错误。
    • 你说得对,我查看了数据库。一定是 woocommerce 的错误,当我通过 menu_order 时,查询采用并更改了顺序 ...
    • @nuriye 好消息,该错误已获得批准并已修复Here...它将在下一个 3.6.2 即将更新的版本中。
    • @nuriye 更新 3.6.2 已发布,您将在更改日志中看到:修复 - [3.6.x] 允许 WC 分类法的默认排序被 get_terms orderby 覆盖。 #23477
    猜你喜欢
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2021-06-11
    • 1970-01-01
    • 2019-06-20
    相关资源
    最近更新 更多