Set minimum allowed weight for a specific country in WooCommerce

后端 未结 1 542
半阙折子戏
半阙折子戏 2020-12-10 22:08

I am trying to specifically apply a mandatory minimum weight of 20 kilos for the country of Colombia avoiding checkout if the total cart weight is under this minimal weight.

1条回答
  •  一生所求
    2020-12-10 23:00

    Update (for Argentina and Colombia shipping counties)

    I have revisited your code and make it work just for colombia with a minimal weight of 20 kilos. You will need to check the weight unit as it should be "Kg" (in Kilos).

    The code:

    add_action( 'woocommerce_check_cart_items', 'checkout_required_min_weight_country_based' );
    function checkout_required_min_weight_country_based() {
        // Only on Cart or Checkout pages
        if( ! ( is_cart() || is_checkout() ) ) return;
    
        // Get the shipping country
        $country = WC()->session->get('customer')['shipping_country'];
        if( empty($country) ){
            $country = WC()->session->get('customer')['billing_country'];
        }
    
        // For Colombia and Argentina shipping countries
        if( in_array( $country, array('CO', 'AR') ) ){
    
            // HERE Set the minimum weight
            $minimum_weight = 20; // 20 kg
    
            // Get the Cart's content total weight
            $total_weight = WC()->cart->get_cart_contents_weight();
    
            // If total weight is lower than minimum, we avoid checkout and display an error notice
            if( $total_weight < $minimum_weight  ) {
                // Display an dynamic error notice
                wc_add_notice( sprintf(
                    'A Minimum Weight of %s is required before checking out.'
                    . '
    Current cart weight: %s', wc_format_weight($minimum_weight), wc_format_weight($total_weight) ), 'error' ); } } }

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

    When Colombia is the detected country (or the defined country) you will get something like:


    The same code for all countries:

    add_action( 'woocommerce_check_cart_items', 'checkout_required_min_weight' );
    function checkout_required_min_weight() {
        // Only on Cart or Checkout pages
        if( ! ( is_cart() || is_checkout() ) ) return;
    
        // HERE Set the minimum weight
        $minimum_weight = 20; // 20 kg
    
        // Get the Cart's content total weight
        $total_weight = WC()->cart->get_cart_contents_weight();
    
        // If total weight is lower than minimum, we avoid checkout and display an error notice
        if( $total_weight < $minimum_weight  ) {
            // Display an dynamic error notice
            wc_add_notice( sprintf(
                'A Minimum Weight of %s is required before checking out.'
                . '
    Current cart weight: %s', wc_format_weight($minimum_weight), wc_format_weight($total_weight) ), 'error' ); } }

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

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