You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从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;

请问问题出在哪里?


问题分析与解决方法

错误原因:

  1. 直接访问受保护属性:data是WC_Product_Variation类的protected属性,外部代码不能直接通过$product->data访问,这种写法本身就无法获取到数据。
  2. 错误的数组/对象访问语法:
    • 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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 04:45:57