使用 WooCommerce wc_get_product_terms 函数对产品属性术语进行排序

Posted

技术标签:

【中文标题】使用 WooCommerce wc_get_product_terms 函数对产品属性术语进行排序【英文标题】:Sort product attribute terms using WooCommerce wc_get_product_terms function 【发布时间】:2019-08-28 22:49:16 【问题描述】:

我有一个由 WooCommerce 提供支持的电子商务网站。我正在使用产品变体来让我的客户为他们的产品选择特定的配置。

我正在使用以下代码列出特定产品属性的术语名称:

$available_pa_colors = wc_get_product_terms( $product->get_id(), 'pa_colors' );    

而且效果很好。

但是将默认排序顺序从“自定义排序”更改为“术语 ID”时,我什么也得不到(没有显示术语名称)。

我做了一些研究,似乎 wc_get_product_terms 不适用于排序。如何使这些术语按术语 ID 排序?

对此的任何跟踪将不胜感激。

【问题讨论】:

【参考方案1】:

函数wc_get_product_terms() 使用_wc_get_cached_product_terms() 优先考虑存储的缓存数据,而不是使用其中包含的 WordPress wp_get_post_terms()。 这就是为什么你不能对任何东西进行排序。

因此,您应该直接使用wp_get_post_terms(),它允许像这样进行排序:

$available_pa_colors = wp_get_post_terms( $product->get_id(), 'pa_colors', array(
    'orderby' => 'term_id', 'order' => 'ASC', 'fields' => 'names'
) );

经过测试并且有效。

【讨论】:

感谢@LoicTheAztec!只需将 wc_get_product_terms() 重命名为 wp_get_post_terms() ,网站上的属性排序就从默认的名称更改为产品卡变体中设置的排序。

以上是关于使用 WooCommerce wc_get_product_terms 函数对产品属性术语进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何开发一个woocommerce插件

使用 wp-woocommerce 的 FirstData

WooCommerce - 覆盖运费

WooCommerce - 同时使用多种付款方式支付订单

使用重定向的 Woocommerce 自定义支付网关工作流程

检查 WooCommerce 是不是处于活动状态以及使用的版本