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

如何从WooCommerce订单项获取未关联变体的产品属性值

解决WooCommerce订单项获取非变体属性的问题

当订单项是变体产品时,直接从变体对象里拿不到父产品的非变体属性——因为变体不会自动继承这类未关联变体的属性。你需要先判断当前产品是否为变体,若是则获取对应的父可变产品,再从父产品中提取目标属性。

修改后的代码如下:

foreach($wcOrder->get_items() as $item) 
{
    $wcProduct = $item->get_product();

    if (is_object($wcProduct))
    {
        // 先尝试从当前产品获取属性
        $attributeValue = $wcProduct->get_attribute(MY_INTERNAL_ATTRIBUTE_NAME);
        
        // 如果当前产品是变体且未获取到值,从父产品获取
        if (empty($attributeValue) && $wcProduct->is_type('variation')) {
            $parentProduct = $wcProduct->get_parent_product();
            if ($parentProduct) {
                $attributeValue = $parentProduct->get_attribute(MY_INTERNAL_ATTRIBUTE_NAME);
            }
        }
        
        // 处理获取到的属性值
        if (!empty($attributeValue)) {
            // ... 你的业务逻辑
        }
    }
}

代码说明:

  • 先尝试直接从当前订单项关联的产品(可能是简单产品或变体)获取属性
  • 如果当前产品是变体且没拿到值,调用get_parent_product()获取父可变产品
  • 从父产品中提取你需要的内部属性
  • 确保属性名MY_INTERNAL_ATTRIBUTE_NAME和你后台设置的属性别名完全一致

你也可以根据需求调整逻辑优先级,比如直接先判断产品类型,变体产品直接从父产品取值,上面的写法更灵活,能覆盖简单产品和变体两种场景。

内容的提问来源于stack exchange,提问作者drakanor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 15:53:11