我们是在线多餐厅送货服务:
如果客户从2家或更多不同的餐厅订购,我们需要加收额外费用。因此,为每家餐厅加收2欧元的额外费用。
示例:
类别:
我们认为这可能会起作用:
餐馆是一个子类别,例如:
城市(最高排名)->餐馆(儿童最高)->膳食(产品)
因此,我们认为编写一些代码来检查购物车结帐中的产品(餐食)是否来自多个类别(餐厅)可能容易些?然后申请额外费用?
这里需要一些有关如何最好地解决这种情况的帮助。谢谢!
答案 0 :(得分:0)
为此,请在活动主题的functions.php中添加以下代码段-
function woo_add_cart_fee() {
global $woocommerce;
$items = $woocommerce->cart->get_cart();
$restaurant = array();
foreach($items as $item => $values) {
$available_restaurant_cat_ids = array(); // Replace the empty array with all avaiable 'restaurants' categories ids
$restaurant_list_ids = wp_get_post_terms($values['data']->get_id(),'product_cat',array('fields'=>'ids')); // we assumed that restaurant belongs to product_cat
if($restaurant_list_ids){
foreach ($restaurant_list_ids as $id) {
if(!in_array($id, $available_restaurant_cat_ids)) continue; // id not belongs to restaurant
if(!in_array($id, $restaurant)){
$restaurant[] = $id;
}
}
}
}
$restaurant_multiply = count($restaurant) - 1; // first restaurant id free
$extra_fee = 2; // 2 euro
$woocommerce->cart->add_fee( __('Extra fees', 'woocommerce'), $extra_fee*$restaurant_multiply );
}
add_action( 'woocommerce_cart_calculate_fees', 'woo_add_cart_fee' );