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 中检查产品是不是具有特定的产品属性