如何从WC_Product_Variation对象中获取pa_unidaddeventa属性值?
问题:无法获取WC_Product_Variation对象中pa_unidaddeventa属性的值
我有一个WC_Product_Variation对象存在变量$product中,需要输出其中attributes->pa_unidaddeventa对应的值(预期结果为11-70cmx100m)。对象结构如下:
WC_Product_Variation Object ( [post_type:protected] => product_variation [data:protected] => Array ( [attributes] => Array ( [pa_unidaddeventa] => 11-70cmx100m [pa_manipulacion] => 56-cortadaa62_8cm ) ...
尝试了以下代码,但均无输出:
echo $product->data[1]->attributes[1]->pa_unidaddeventa; echo $product->data[0]->attributes[0]->pa_unidaddeventa;
请问问题出在哪里?
问题分析与解决方法
错误原因:
- 直接访问受保护属性:
data是WC_Product_Variation类的protected属性,外部代码不能直接通过$product->data访问,这种写法本身就无法获取到数据。 - 错误的数组/对象访问语法:
data是数组类型,不是对象,不能用->来访问内部元素,应该用数组的[]语法。attributes是关联数组,不是索引数组,不能用[0]、[1]这种数字索引去访问,必须使用对应的键名(比如pa_unidaddeventa)。
正确实现方式:
方法一:使用WooCommerce官方推荐的API(优先选择)
WooCommerce提供了专门的方法来获取变体属性,避免直接操作内部结构:
echo $product->get_attribute('pa_unidaddeventa');
方法二:通过官方方法获取完整数据(不推荐直接操作内部结构,仅作参考)
如果需要访问完整的data数组,应该使用类提供的get_data()方法:
$product_data = $product->get_data(); echo $product_data['attributes']['pa_unidaddeventa'];
内容的提问来源于stack exchange,提问作者JPashs
相关产品推荐
相关产品推荐

