我使用以下函数列出产品类别并按名称排序。自从我上次将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和店面主题版本2.4.5。
更新2 - 解决
在我报告这个issue on Github WooCommerce后,显然是一个在调用
orderby
函数时影响get_terms()
参数的错误。它现在已获批准并且patched。Woocommerce更新3.6.2解决了这个问题
首先,因为WordPress 4.5分类法应该通过get_terms()
函数的参数数组中的“分类法”参数传递。
你不能使用'menu_order'
和'suppress_filter'
参数,因为它们没有为WP_Term_Query
类定义。而不是'menu_order'
,你将使用'orderby' => 'order',
。
现在,在get_terms()
中列出了WordPress WP_Term_Query
__construct()
函数的允许参数。
所以,你可以使用**“orderby
”论证:**
name
。name
,slug
,term_group
,term_id
,id
,description
,parent
),count
用于术语分类计数,include
以匹配$ include param的order
,slug__in
以匹配$ slug param的order
,meta_value
,meta_value_num
,$ 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,
) );
测试和