WooCommerce 如何在前端获取产品属性的干净标签

Posted

技术标签:

【中文标题】WooCommerce 如何在前端获取产品属性的干净标签【英文标题】:WooCommerce how to get a clean label of a product attributes on front end 【发布时间】:2022-01-09 11:04:24 【问题描述】:

所以,我在我正在编写的插件中成功地添加了产品、带有属性的变体等。我遇到的问题是,在前端,属性显示为原始名称(例如 pa_variation_name),而不是看起来干净的标题(例如变体名称)。

我正在将属性添加到父产品中,如下所示...

$product = wc_get_product($post_id);
$attribute = new WC_Product_Attribute();
$attribute->set_name('pa_variation_name');
$attribute->set_options($attributes_array);
$attribute->set_visible(true);
$attribute->set_variation(true);
$attributes[] = $attribute;

$product->set_attributes($attributes);

$product->save();

然后像这样将数据添加到个体变体中:

update_post_meta($variation_id, 'attribute_pa_variation_name', $args['Description']);

也许我遗漏了一些明显的东西,但是我怎样才能设置一个干净的标题,这样我就不会在前端出现“pa_whatever”?

【问题讨论】:

【参考方案1】:

“在前端,属性显示为原始名称(例如 pa_variation_name),而不是看起来干净的标题(例如变体名称)。”

我会使用 woocommerce wc_attribute_label 函数。像这样:

wc_attribute_label( $attribute->->get_name() );

例如,如果我在我的一种产品上运行它:

$attributes = $product->get_variation_attributes();

foreach ($attributes as $attribute_name => $attribute_options) 

  echo wc_attribute_label($attribute_name);

它会输出这个:

注意:

已大写。 pa_ 已被删除。

但是如果我在没有wc_attribute_label 的情况下运行我的代码:

$attributes = $product->get_variation_attributes();

foreach ($attributes as $attribute_name => $attribute_options) 

  echo $attribute_name;

它会输出这个:


更多详情可以查看wc_attribute_label函数。

【讨论】:

以上是关于WooCommerce 如何在前端获取产品属性的干净标签的主要内容,如果未能解决你的问题,请参考以下文章

如何从 WooCommerce 产品属性术语中获取元数据

获取产品自定义属性以在 WooCommerce 产品循环中显示它们

如何在 Woocommerce 中检查产品是不是具有特定的产品属性

如何在 Woocommerce 中的产品图片上添加热门属性(如销售)

如何在 woocommerce 中获取产品的特色图片

Woocommerce - 使用特定属性列出产品