get_terms 忽略 WooCommerce 产品类别的 orderby 参数
get_terms ignores orderby argument on WooCommerce product categories
我使用了以下功能来列出产品类别并按名称排序。自从我上次将 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。
Update 2 - Solved
After I reported this issue on Github WooCommerce, it was clearly a bug affecting orderby
argument when calling get_terms()
function. It's now approved and patched.
The issue is solved on Woocommerce update 3.6.2
首先,自 WordPress 4.5 以来,分类法应通过 get_terms()
函数参数数组中的“分类法”参数传递。
您不能使用'menu_order'
和'suppress_filter'
参数,因为它们未定义用于WP_Term_Query
Class。您将使用 'orderby' => 'order',
.
而不是 'menu_order'
现在 WordPress get_terms()
函数的 允许参数 列在 WP_Term_Query
__construct()
.
所以你可以使用 "orderby
" 参数:
- 默认值设置为
name
。
- 接受术语字段(
name
、slug
、term_group
、term_id
、id
、description
、parent
), count
用于术语分类计数,include
匹配 $include 参数的 order
,slug__in
匹配 $slug 参数的 order
, meta_value
、meta_value_num
、$meta_key 的值、$meta_query 的数组键,或 none
省略 ORDER BY 子句。
所以你的代码应该是这样的:
$terms = get_terms( array(
'taxonomy' => 'product_cat',
// 'orderby' => 'name', // <=== Default orderby is already 'name'
'order' => 'ASC',
'parent' => 2063,
) );
测试和
我使用了以下功能来列出产品类别并按名称排序。自从我上次将 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。
Update 2 - Solved
After I reported this issue on Github WooCommerce, it was clearly a bug affecting
orderby
argument when callingget_terms()
function. It's now approved and patched.
The issue is solved on Woocommerce update 3.6.2
首先,自 WordPress 4.5 以来,分类法应通过 get_terms()
函数参数数组中的“分类法”参数传递。
您不能使用'menu_order'
和'suppress_filter'
参数,因为它们未定义用于WP_Term_Query
Class。您将使用 'orderby' => 'order',
.
'menu_order'
现在 WordPress get_terms()
函数的 允许参数 列在 WP_Term_Query
__construct()
.
所以你可以使用 "orderby
" 参数:
- 默认值设置为
name
。 - 接受术语字段(
name
、slug
、term_group
、term_id
、id
、description
、parent
),count
用于术语分类计数,include
匹配 $include 参数的order
,slug__in
匹配 $slug 参数的order
,meta_value
、meta_value_num
、$meta_key 的值、$meta_query 的数组键,或none
省略 ORDER BY 子句。
所以你的代码应该是这样的:
$terms = get_terms( array(
'taxonomy' => 'product_cat',
// 'orderby' => 'name', // <=== Default orderby is already 'name'
'order' => 'ASC',
'parent' => 2063,
) );
测试和