Local pickup shipping option custom percentage discount in Woocommerce

后端 未结 1 1200

My WooCommerce checkout page gives some shipping options:

  • Flat Rate (costs money)
  • Local Pickup (free).

How can I give a 5% discount on tota

1条回答
  •  无人及你
    2021-01-24 05:39

    The following code will add a discount of 5% to cart subtotal for Local Pickup chosen shipping method:

    add_action( 'woocommerce_cart_calculate_fees', 'custom_discount_for_pickup_shipping_method', 10, 1 );
    function custom_discount_for_pickup_shipping_method( $cart ) {
        if ( is_admin() && ! defined( 'DOING_AJAX' ) )
            return;
    
        $percentage = 5; // <=== Discount percentage
    
        $chosen_shipping_method_id = WC()->session->get( 'chosen_shipping_methods' )[0];
        $chosen_shipping_method    = explode(':', $chosen_shipping_method_id)[0];
    
        // Only for Local pickup chosen shipping method
        if ( strpos( $chosen_shipping_method_id, 'local_pickup' ) !== false ) {
            // Calculate the discount
            $discount = $cart->get_subtotal() * $percentage / 100;
            // Add the discount
            $cart->add_fee( __('Pickup discount') . ' (' . $percentage . '%)', -$discount );
        }
    }
    

    Code goes in function.php file of your active child theme (active theme). Tested and works.

    0 讨论(0)
提交回复
热议问题