代码检查发运分类是否等于标识53,并隐藏发运方法。问题在于:如果有人添加了一个以上的产品,代码检查只在最后添加的项目。我想它先计算所有添加的产品,如果有超过2个产品具有相同的航运类,那么它将隐藏“包储物柜”航运方法请帮助
`add_filter( 'woocommerce_package_rates', 'fanka_kodowania_hide_shipping_method1', 10, 2 );
function fanka_kodowania_hide_shipping_method1( $rates, $package )
{
if ( is_admin() && ! defined( 'DOING_AJAX' ) )
return;
/*****************KLASA WYSYŁKI**************************/
$class1 = 53;
/********************************************************/
/*****************METODY WYSYŁKI*************************/
$method_key_ids = array('inpost_paczkomaty:12');
/********************************************************/
global $woocommerce;
foreach ( WC()->cart->get_cart() as $cart_item ) {
$item = $cart_item['data'];
if(!empty($item)) {
$quantity = $cart_item['quantity'];
}
}
foreach( $package['contents'] as $item ) {
if( $item['data']->get_shipping_class_id() == $class1 && $quantity >1 ){
foreach( $method_key_ids as $method_key_id ){
unset($rates[$method_key_id]);
}
}
}
return $rates;
}
`
2条答案
按热度按时间guykilcj1#
在确定是否应隐藏配送方式时,此检查将检查购物车中的最后一个项目。
添加数量检查:
lskq00tm2#
此代码的问题在于,它只检查添加到购物车的最后一个项目的数量,而不检查发运分类ID为53的项目的总数量。要解决此问题,您可以添加一个变量来跟踪具有该发运分类ID的项目的总数量,然后在末尾检查该变量的值,以确定是否隐藏发运方法。
这将遍历购物车中的项目,对于发运分类标识为53的每个项目,它将把该项目的数量添加到total_quantity变量中。遍历所有项目后,它将检查总数量是否大于1,如果大于1,它将从可用选项中删除指定的发运方法。
祝你好运!