在 WooCommerce 中获取购物车项目变体名称而不是变体 ID

Get cart item variation name instead of variation ID in WooCommerce

我想添加隐藏送货方式的功能,但如果选择了变体,则对所有产品添加一个。有数千种产品,未来还会有更多。我使用了这段代码:

 
   $_product = $values['data'];
 
        // if product variation id @ Cart, disable all but Local Pickup
   if( $_product->variation_id == 26408 || $_product->variation_id == 26409 ) {
 
      $wc_pickup_store = $rates['wc_pickup_store'];
           $rates = array();
           $rates['wc_pickup_store'] = $wc_pickup_store;
      }
 
   }
 
   return $rates;
 
}

我想要实现的是用变体名称替换变体 ID,以便它可以应用于所有具有相同变体名称的产品。

感谢您的帮助!

您的代码自 WooCommerce 3 以来已过时。对于购物车商品变体 ID,您应该使用:

$variation_id = $values['variation_id'];

变体名称是产品变体标题,您可以使用WC_Product方法获得get_name()

如果变体 ID 是大于零的整数,$_product->get_name() 将是变体名称。否则它将是产品名称(例如简单产品的名称)。

因此您的代码将是:

        $_product     = $values['data'];
        $variation_id = $values['variation_id'];
        $product_name = $_product->get_name(); // The variation name
     
        // if product variation id @ Cart, disable all but Local Pickup
        if( $variation_id == 26408 || $variation_id == 26409 ) {
            $wc_pickup_store = $rates['wc_pickup_store'];
            $rates = array();
            $rates['wc_pickup_store'] = $wc_pickup_store;
        }
    } 
    return $rates;
}