我使用woocommerce插件创建了一个变量产品。在变量产品中,我创建了一个自定义属性“许可证持续时间”,其值为“ 3个月| 6个月| 1年|生命时间”。
现在我想在自定义单一产品模板上显示此属性。
我尝试过以下解决方案
1
$licenseDurations = get_the_terms( $post->ID, 'attribute_license-duration' );
这显示在var_dump($licenseDurations);
`
object(WP_Error)[558]
public 'errors' =>
array (size=1)
'invalid_taxonomy' =>
array (size=1)
0 => string 'Invalid taxonomy' (length=16)
public 'error_data' =>
array (size=0)
empty`
和
2
global $product;
$licenseDuration = $product->get_attribute( 'License Duration' ); // Here I also tried attribute slug `attribute_license-duration` instead of `License Duration` but no use
参考:https://stackoverflow.com/a/13454788/2758870
和
第3
global $product;
$licenseDurations = get_the_terms( $product->id, 'License Duration');
foreach ( $licenseDurations as $licenseDuration )
{
echo $licenseDuration->name;
}
在上述两种情况下,我都没有得到任何结果,因为$product;
正在null
上返回var_dump($product)
4. 我还试过这段代码http://isabelcastillo.com/woocommerce-product-attributes-functions
直接调用我要显示值的isa_woo_get_one_pa()
。但没有运气。
此处有人请帮忙......
答案 0 :(得分:3)
您可以尝试以下
1. get_post_meta
获取产品属性
$attr = get_post_meta( 123, '_product_attributes' ); // replace 123 with the actual product id
print_r( $attr );
2.您可以创建产品对象,然后使用get_attributes
方法
$p = new WC_Product( 123 ); // // replace 123 with the actual product id
print_r( $p->get_attributes() );
答案 1 :(得分:1)
不确定woocommerce是否有变化,上面没有给出属性值。来自此page的帖子给出了正确答案
//使用您的属性名称替换pa_attribute
,但保留pa_
前缀
//例如pa_weight
$fabric_values = get_the_terms( $product->id, 'pa_attribute');
foreach ( $fabric_values as $fabric_value ) {
echo $fabric_value->name;
}
答案 2 :(得分:0)
以下是所有产品属性列表。希望对您有帮助。
$product_attributes = get_post_meta( $post->ID, '_product_attributes' );
foreach ( $product_attributes as $group_attributes ) {
foreach ( $group_attributes as $attributes ) {
echo $attributes['name'].'=>'.$attributes['value'];
}
}