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

时间:2019-04-23 12:44:00

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

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

1 个答案:

答案 0 :(得分: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参数的orderslug__in匹配$ slug参数order的{​​{1}} 1}},meta_value,$ meta_key的值,$ meta_query的数组键或meta_value_num的值来省略ORDER BY子句。

所以您的代码应类似于:

none

经过测试和