未设置 WooCommerce 订单商品变体时获取产品属性值

问题描述 投票:0回答:1

我有不同的产品(在这种情况下是礼券)。在这些可变产品中,我还有一个未为变体设置的属性,即不应向客户显示的内部参考(在本例中是与会计相关的代码号)。

无论客户订购了哪种变体,我如何从 WooCommerce 订单商品中检索此属性值?

现在,我正在尝试使用以下代码检索此属性值:

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

    if (is_object($wcProduct))
    {
        if (key_exists(MY_INTERNAL_ATTRIBUTE_NAME, $wcProduct->get_attributes())) {
            $attributeValue = $wcProduct->get_attribute( PROPERTY_TYPE_B2B_ARTICLE ));
            ...
        }
    }
}

当订单项是简单产品时它有效,但当订单项是产品变体时我没有获得任何属性值。

如果未设置变体属性值,如何从 WooCommerce 订单项目获取属性值?

php wordpress woocommerce orders product-variations
1个回答
1
投票

对于在变量产品上设置的不用于变体的产品属性,当订单商品是产品变体时,您需要获取父变量产品。

尝试以下重新访问的代码:

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

    if ( $item->get_variation_id() > 0 ) {
        $wcProduct = wc_get_product( $item->get_product_id() )
    } else {
        $wcProduct = $item->get_product();
    }
        
    if ( key_exists( MY_INTERNAL_ATTRIBUTE_NAME, $wcProduct->get_attributes() ) ) {
        $attributeValue = $product->get_attribute( PROPERTY_TYPE_B2B_ARTICLE );
        // ...
    }
}

应该有效

© www.soinside.com 2019 - 2024. All rights reserved.