首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >get_terms忽略WooCommerce产品类别上的orderby参数

get_terms忽略WooCommerce产品类别上的orderby参数
EN

Stack Overflow用户
提问于 2019-04-23 20:44:00
回答 1查看 1.9K关注 0票数 1

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

我写到orderby中的内容无关紧要。我猜这些术语是按id排序的,顺序与后端相同。

我以前遇到过这个问题,但后来我添加了'menu_order' => false,它就起作用了。但自从更新后,什么都不再起作用了。

代码语言:javascript
复制
$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。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-24 01:20:16

更新2 -已解决

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

在Woocommerce更新3.6.2上解决了这个问题

首先,因为分类法4.5应该通过get_terms()函数的参数数组中的‘WordPress’参数来传递。

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

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

所以你可以使用**"**orderby**" :**

  • 默认值设置为name.
  • Accepts术语字段(nameslugterm_groupterm_idid,d45,d46),d47用于术语分类计数,d48匹配$include参数的d49,d50匹配$slug参数的d51,d52,d53,$meta_key的值,$meta_query的数组键,或none以省略ORDER BY子句。

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

代码语言:javascript
复制
$terms = get_terms( 'product_cat', array(
    'taxonomy' => 'product_cat',
    // 'orderby'  => 'name', // <=== Default orderby is already 'name'
    'order'    => 'ASC',
    'parent'   => 2063,
) );

经过测试和

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55811525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档