首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Woocommerce结帐:如果产品来自不同类别,则创建自定义费用

Woocommerce结帐:如果产品来自不同类别,则创建自定义费用
EN

Stack Overflow用户
提问于 2019-06-27 11:47:54
回答 1查看 98关注 0票数 0

设想情况:

我们是一家在线的多餐厅送货服务:

如果顾客从两家或更多的不同餐馆订购,我们需要额外的费用。所以每一家餐厅都要多付2欧元的费用。

例子:

  • 顾客选择一餐:免费
  • 顾客从同一家餐厅选择两餐:免费。
  • 顾客从两家不同的餐厅选择两餐:2欧元的额外费用。
  • 顾客从3家不同的餐厅选择3餐:2欧元+2欧元=4欧元
  • 客户选择4餐从4家不同的餐厅:2欧元+2欧元+2欧元=6欧元.诸若此类

类别:

  • 每家餐厅为1类。
  • 每顿饭有一个以上的类别和
  • 我们需要在购物车结账时检查这一类别是否特别相等或不同。

问题:

以下是我们认为可能有效的方法:

  • 我们可能不得不在购物车结账时滚动每一顿饭(产品),
  • 我们必须得到每顿饭的种类和
  • 比较每顿饭+检查它们是否属于不同的餐馆

餐馆是一个子类别,例如:

城市(顶级猫) ->餐厅(儿童猫) ->餐(产品)

解决办法:

因此,我们认为很容易编写一些代码,检查购物车结账上的产品(餐食)是否来自一个以上的类别(餐馆)?然后再加收附加费?

这里需要一些关于如何最好地处理这个场景的帮助。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-06-27 13:03:05

为此,在活动主题的functions.php中添加以下代码片段-

代码语言:javascript
运行
复制
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' );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56790320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档