我需要设置每个订单的最大重量125kg,但仅适用于装运类别为“的产品”;sypkie;。我有下面的代码,它可以工作,但对于购物车中的所有产品。我想让它只适用于带有;sypkie“;装运类别。
add_action(\'woocommerce_check_cart_items\',\'check_cart_weight\');
function check_cart_weight(){
global $woocommerce;
$weight = $woocommerce->cart->cart_contents_weight;
if( $weight > 20 ){
wc_add_notice( sprintf( __( \'You have %sKg weight and we allow only 20Kg of weight per order.\', \'woocommerce\' ), $weight ), \'error\' );
}
}
如何修改此代码以使用shipping类?非常感谢。
SO网友:Spiricle
这样可以做到:
add_action(\'woocommerce_check_cart_items\',\'check_cart_weight\');
add_action(\'woocommerce_checkout_process\', \'check_cart_weight\' );
function check_cart_weight()
{
$cart = WC()->cart;
if(!$cart) return;
$weight = 0;
foreach($cart->get_cart_contents() as $item)
{
if(!isset($item[\'product_id\'])) continue;
$prod = wc_get_product($item[\'product_id\']);
if($prod->get_shipping_class()!==\'sypkie\') continue;
$weight += ($item[\'quantity\'] * (float)$prod->get_weight());
};
if( $weight > 125 )
{
$error = sprintf( __( \'You have %sKg weight and we allow only 125Kg of weight per order.\', \'woocommerce\' ), $weight);
if(is_checkout()) { wc_add_notice($error, \'error\'); } else { wc_print_notice($error, \'error\'); };
};
}
这将检查购物车中的项目,检查其装运类别(通过
slug 并将其重量相加。我还向操作woocommerce\\u checkout\\u过程添加了相同的函数,该过程在签出页面上显示相同的消息。