dounuo9921 2017-09-06 20:41
浏览 29
已采纳

WooCommerce快速购物车费

I would like to add a fee to certain categories if the total number of products from all the defined category is 1 or separate fee if the quantity is 2-9.. (IE. + $10 to the product if they only order 1, +$5 per product if they order 2-9 items).

I started on this base: Custom Fee based on product dimensions and categories

I have maid some changes, but I can't get it working and I am stuck.

Here is my code:

add_action( 'woocommerce_cart_calculate_fees','custom_applied_fee');
function custom_applied_fee() {

    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    // Set HERE your categories (can be an ID, a slug or the name… or an array of this)
    $category1 = 'plain';
    $category2 = 'plywood';

    // variables initialisation
    $fee = 0;

    // Iterating through each cart item
    foreach(WC()->cart->get_cart() as $cart_item){
        // Get the product object
        $product = new WC_Product( $cart_item['product_id'] );
        $quantiy = $value['quantity']; //get quantity from cart

        // Initialising variables (in the loop)
        $cat1 = false; $cat2 = false;

        // ## CALCULATIONS ## (Make here your conditional calculations)
        $quantity = GET TOTAL QUANTITY
        if($quantity <= 1){
            $fee += 10 * $quanity;
        } elseif($quantity > 1 && $dimention <= 9){
            $fee += 5 * $quanity;
        } elseif($dimention > 10){
            $fee += 1 * $quanity;
        }
    }

    // Adding the fee
    if ( $fee != 0 )
        WC()->cart->add_fee( $fee_text, $fee, true );
}

What I am doing wrong? How can I get this working?

  • 写回答

2条回答 默认 最新

  • doujia7162 2017-09-07 00:11
    关注

    Updated 2

    Your needs are not so clear, so I have tried to do my best. I have understood that you want to add:

    • An fixed initial fee when there is 1 cart item from defined product category(ies).
    • A calculated fee based on total cart item count when there is (from 2 to 9) cart items from defined product category(ies).

    Here is the corresponding code for that:

    add_action( 'woocommerce_cart_calculate_fees','conditional_custom_multiple_fees', 10, 1 );
    function conditional_custom_multiple_fees( $cart_object ) {
    
        if ( is_admin() && ! defined( 'DOING_AJAX' ) )
            return;
    
        // Set HERE your categories (can be an ID, a slug or the name… or an array of this)
        $product_categories = array('clothing', 'disc');
        $cat_qty = 0;
        $cart_total_qty = $cart_object->get_cart_contents_count();
    
        // Iterating through each cart item
        foreach( $cart_object->get_cart() as $cart_item ){
            $product = $cart_item['data']; // The product object
            $item_qty = $cart_item['quantity']; // Item quantity
    
            // Counting quanties for the product categories
            if( has_term( $product_categories, 'product_cat', $cart_item['data']->get_id() ) )
                $cat_qty += $cart_item['quantity'];
        }
    
        ##  --  --  --  --  CALCULATIONS AND CONDITIONAL FEES  --  --  --  --  ##
    
        // 1. A fee for the product defined categories for 1 cart item only
        if($cat_qty == 1) // updated HERE
        {
            $fee_amount = 10;
            $cart_object->add_fee( __( "Fee (1)" ), $fee_amount, true );
        }
    
        // 2. Or a calculated fee for the defined product categories (qty from 2 to 9)
        if( $cat_qty >= 2 && $cat_qty <= 9 )
        {
            $amount_by_item = 5; // amount by item (updated)
            $calculated_fee = $amount_by_item * $cat_qty;  // calculation (updated)
            $cart_object->add_fee( __( "Fee (2 to 9)" ), $calculated_fee, true );
        }
    }
    

    Code goes in function.php file of your active child theme (or theme) or also in any plugin file.

    This code is tested and works.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在sql server里完成筛选
  • ¥15 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了