WooCommerce 删除基于产品 ID 和购买数量的运输方式
WooCommerce remove shipping method based on product IDs & quantity bought
我正在尝试根据购物车中的两个参数删除送货方式。
参数 1 = 产品 ID
参数 2 = 为该产品 ID 添加的数量。
我一直在四处搜索并组合不同的解决方案,但是使用下面的代码片段仍然没有给我正确的结果。预期结果是,如果任何产品 ( 6 、 9 、 69 、 71 ) 被添加到我的购物车 52 次,运费 (flexible_shipping_2_1) 应该消失。
我们将不胜感激。
add_filter( 'woocommerce_package_rates', 'specific_products_shipping_methods', 10, 2 );
function specific_products_shipping_methods( $rates, $package ) {
$product_ids = array( 6 , 9, 69 , 71 ); // HERE set the product IDs in the array
$method_id = 'flexible_shipping_2_1'; // HERE set the shipping method ID
$found = false;
// Loop through cart items Checking for defined product IDs
foreach( WC()->cart->get_cart_contents() as $cart_item_key => $cart_item ) {
if ( in_array( $cart_item['product_id'], $product_ids ) && $cart_item['quantity'] == 52){
$found = true;
break;
}
}
if ( $found )
unset( $rates[$method_id] );
return $rates;
}
也许这就是您想要的(获取所有已定义产品 ID 的累计数量):
add_filter( 'woocommerce_package_rates', 'specific_products_shipping_methods', 10, 2 );
function specific_products_shipping_methods( $rates, $package ) {
$product_ids = array( 6 , 9, 69 , 71 ); // HERE set the product IDs in the array
$method_id = 'flexible_shipping_2_1'; // HERE set the shipping method ID
$quantity = 0;
// Get cart items for the current shipping package
foreach( $package['contents'] as $cart_item ) {
if ( in_array( $cart_item['product_id'], $product_ids ) ){
$quantity += $cart_item['quantity'];
}
}
if ( $quantity >= 52 && isset($rates[$method_id]) ) {
unset($rates[$method_id]);
}
return $rates;
}
别忘了清空您的购物车,刷新运输缓存数据…
我正在尝试根据购物车中的两个参数删除送货方式。 参数 1 = 产品 ID 参数 2 = 为该产品 ID 添加的数量。
我一直在四处搜索并组合不同的解决方案,但是使用下面的代码片段仍然没有给我正确的结果。预期结果是,如果任何产品 ( 6 、 9 、 69 、 71 ) 被添加到我的购物车 52 次,运费 (flexible_shipping_2_1) 应该消失。
我们将不胜感激。
add_filter( 'woocommerce_package_rates', 'specific_products_shipping_methods', 10, 2 );
function specific_products_shipping_methods( $rates, $package ) {
$product_ids = array( 6 , 9, 69 , 71 ); // HERE set the product IDs in the array
$method_id = 'flexible_shipping_2_1'; // HERE set the shipping method ID
$found = false;
// Loop through cart items Checking for defined product IDs
foreach( WC()->cart->get_cart_contents() as $cart_item_key => $cart_item ) {
if ( in_array( $cart_item['product_id'], $product_ids ) && $cart_item['quantity'] == 52){
$found = true;
break;
}
}
if ( $found )
unset( $rates[$method_id] );
return $rates;
}
也许这就是您想要的(获取所有已定义产品 ID 的累计数量):
add_filter( 'woocommerce_package_rates', 'specific_products_shipping_methods', 10, 2 );
function specific_products_shipping_methods( $rates, $package ) {
$product_ids = array( 6 , 9, 69 , 71 ); // HERE set the product IDs in the array
$method_id = 'flexible_shipping_2_1'; // HERE set the shipping method ID
$quantity = 0;
// Get cart items for the current shipping package
foreach( $package['contents'] as $cart_item ) {
if ( in_array( $cart_item['product_id'], $product_ids ) ){
$quantity += $cart_item['quantity'];
}
}
if ( $quantity >= 52 && isset($rates[$method_id]) ) {
unset($rates[$method_id]);
}
return $rates;
}
别忘了清空您的购物车,刷新运输缓存数据…