Dhan
Dhan

Reputation: 519

How to hide VAT label and value from WooCommerce order emails?

I want to hide or remove VAT (tax) line from WooCommerce order emails. Result comes out from this function "get_order_item_totals()". Already I can hide tax label from emails by using following code.

function sv_change_email_tax_label( $label ) {
    $label = '';
    return $label;
}
add_filter( 'woocommerce_countries_tax_or_vat', 'sv_change_email_tax_label'       );

I want to hide the entire row of VAT from order emails.

Upvotes: 1

Views: 7657

Answers (2)

Dhan
Dhan

Reputation: 519

Finally figured out a way do this. "get_order_item_totals()" function returns an Array of arrays. so i unset() the unwanted array. in this case $totals[tax] following is my code in email template.

<?php
    if ( $totals = $order->get_order_item_totals() ) {              
       unset($totals[tax]);
       $i = 0;
       foreach ( $totals as $total ) {                  
       $i++;                    
     ?><tr>
       <th scope="row" colspan="2" style="text-align:left; border: 1px solid #eee; <?php if ( $i == 1 ) echo 'border-top-width: 4px;'; ?>"><?php echo $total['label']; ?></th>
       <td style="text-align:left; border: 1px solid #eee; <?php if ( $i == 1 ) echo 'border-top-width: 4px;'; ?>"><?php echo $total['value']; ?></td>
</tr><?php                  
      }
   }
 ?>

Thank you very much everyone who tried to help! Regards!

Upvotes: 3

Anand Shah
Anand Shah

Reputation: 14913

Depending on the status of the order, you'll need to edit the relevant email template.

For eg: If you have COD payment method enabled and the customer selected that option, the order status will be "Processing", in that case you need to edit customer-processing-order.php template.

//find this line and after it add the following line of code                
foreach ( $totals as $total ) {  

    //ensure to change "VAT" with the label that appears on your email
    if( strstr( $total['label'], "VAT" ) )  continue; 

Upvotes: 0

Related Questions