如何在woocommerce中的自定义产品模板上获取自定义产品属性

时间:2015-09-28 15:26:21

标签: wordpress wordpress-plugin woocommerce

我使用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()。但没有运气。

此处有人请帮忙......

3 个答案:

答案 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'];
    }
}