我有不同的产品(在这种情况下是礼券)。在这些可变产品中,我还有一个未为变体设置的属性,即不应向客户显示的内部参考(在本例中是与会计相关的代码号)。
无论客户订购了哪种变体,我如何从 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 订单项目获取属性值?
对于在变量产品上设置的不用于变体的产品属性,当订单商品是产品变体时,您需要获取父变量产品。
尝试以下重新访问的代码:
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 );
// ...
}
}
应该有效