Woocommerce 在商业中如何根据装运类别包装产品?
我正在寻找一个解决方案,如何包装的产品在不同的包装基于航运类。有什么功能挂钩吗 让我们举例说明: 我有三种运输类别:可选、快速和标准 客户将订购10倍烈酒(装运类别:可选)、2份奶酪(装运类别:快递)和10千克橄榄(装运类别:标准) 事实上,我需要包装。1.奶酪+(可能是烈酒)快递2。橄榄+标准包装(可能是烈性酒) 我找不到任何解决方案来解决这个问题:单独计算运费价格,并让客户选择可选类别添加到Standard或Express。 任何帮助或提示,可以帮助我解决它将不胜感激 更新: 我使用了下面的代码,但是可选的shipping类仍然存在问题。我如何添加选项,以便用户选择带有可选装运类别的产品添加到快递包裹或标准包裹Woocommerce 在商业中如何根据装运类别包装产品?,woocommerce,Woocommerce,我正在寻找一个解决方案,如何包装的产品在不同的包装基于航运类。有什么功能挂钩吗 让我们举例说明: 我有三种运输类别:可选、快速和标准 客户将订购10倍烈酒(装运类别:可选)、2份奶酪(装运类别:快递)和10千克橄榄(装运类别:标准) 事实上,我需要包装。1.奶酪+(可能是烈酒)快递2。橄榄+标准包装(可能是烈性酒) 我找不到任何解决方案来解决这个问题:单独计算运费价格,并让客户选择可选类别添加到Standard或Express。 任何帮助或提示,可以帮助我解决它将不胜感激 更新: 我使用了下面的
add_filter( 'woocommerce_cart_shipping_packages', 'wf_split_cart_by_shipping_class_group' );
function wf_split_cart_by_shipping_class_group($packages){
//Reset packages
$packages = array();
//Init splitted package
$splitted_packages = array();
// Group of shipping class ids
$class_groups = array(
'group1' => array('plane'),
'group2' => array('truck'),
// 'group3' => array(11,15,17),
);
foreach ( WC()->cart->get_cart() as $item_key => $item ) {
if ( $item['data']->needs_shipping() ) {
$belongs_to_class_group = 'none';
$item_ship_class_id = $item['data']->get_shipping_class();
if($item_ship_class_id){
foreach($class_groups as $class_group_key => $class_group){
if(in_array($item_ship_class_id, $class_group)){
$belongs_to_class_group = $class_group_key;
continue;
}
}
}
$splitted_packages[$belongs_to_class_group][$item_key] = $item;
}
}
// Add grouped items as packages
if(is_array($splitted_packages)){
foreach($splitted_packages as $splitted_package_items){
$packages[] = array(
'contents' => $splitted_package_items,
'contents_cost' => array_sum( wp_list_pluck( $splitted_package_items, 'line_total' ) ),
'applied_coupons' => WC()->cart->get_applied_coupons(),
'user' => array(
'ID' => get_current_user_id(),
),
'destination' => array(
'country' => WC()->customer->get_shipping_country(),
'state' => WC()->customer->get_shipping_state(),
'postcode' => WC()->customer->get_shipping_postcode(),
'city' => WC()->customer->get_shipping_city(),
'address' => WC()->customer->get_shipping_address(),
'address_2' => WC()->customer->get_shipping_address_2()
)
);
}
}
return $packages;
}