我使用以下函数列出产品类别并按名称排序。自从我上一次将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。
发布于 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.name,slug,term_group,term_id,id,d45,d46),d47用于术语分类计数,d48匹配$include参数的d49,d50匹配$slug参数的d51,d52,d53,$meta_key的值,$meta_query的数组键,或none以省略ORDER BY子句。所以你的代码应该是这样的:
$terms = get_terms( 'product_cat', array(
'taxonomy' => 'product_cat',
// 'orderby' => 'name', // <=== Default orderby is already 'name'
'order' => 'ASC',
'parent' => 2063,
) );经过测试和
https://stackoverflow.com/questions/55811525
复制相似问题