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

问题描述 投票:1回答:1

我使用以下函数列出产品类别并按名称排序。自从我上次将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。

php wordpress woocommerce custom-taxonomy taxonomy-terms
1个回答
1
投票

更新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
  • 接受术语字段(nameslugterm_groupterm_ididdescriptionparent),count用于术语分类计数,include以匹配$ include param的orderslug__in以匹配$ slug param的ordermeta_valuemeta_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,
) );

测试和

© www.soinside.com 2019 - 2024. All rights reserved.