phpwordpresswoocommercecart

Disable tax for non logged in users


In WooCommerce, I'm trying to apply set_is_vat_exempt() method for customer and guest user.

For logged customer it is working fine. Can anyone suggest how can I do it?

One issue could be like as the user is not logged in so may be $woocommerce->customer could not enable it.

Here's my code:

$bilalId = get_current_user_id();

add_filter( 'woocommerce_cart_totals_order_total_html', 'wc_cart_totals_order_total_html_bn');

function wc_cart_totals_order_total_html_bn() {
    global $woocommerce;

     if( current_user_can('customer' || $bilalId == 0) ) {

              $woocommerce->customer->set_is_vat_exempt(true);

         } 

}

At the end, I just want to disable any tax rates for non-logged in user.

even I tried "Zero rate" but doesn't worked for me.

Any kind of guidance would be appreciated.

Thanks.


Solution

  • So what you need is to use the wordpress conditional is_user_logged_in() in a custom function hooked in init action hook, this way:

    add_action( 'init', 'wc_tax_exempt_unlogged' );
    function wc_tax_exempt_unlogged() {
    
        // Getting user data for logged users
        if( is_user_logged_in() ){
            $current_user = wp_get_current_user();
            $current_user_id = $current_user->ID;
            $current_user_roles = $current_user->roles;
            $bilal_id = 0;
        }
    
        // Exempting of VAT non logged users, customers and the main admin ID (you)
        if( ! is_user_logged_in() || in_array( 'customer', $current_user_roles ) || $bilal_id == $current_user_id ){
            WC()->customer->set_is_vat_exempt(true);
        }
    }
    

    The 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.