2

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

 
   $_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,以便可以将其应用于具有相同变体名称的所有产品。

谢谢您的帮助!

4

1 回答 1

2

自 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;
}
于 2020-09-28T19:31:36.417 回答