I need help getting this code to apply to more than one product variant. It works how I need for a single product variant but if I try to change it to include other variants for other products it doesn't work. I tried array (618, 1380); which are 2 different products and variants. Anyone have any suggestions for how to exclude tax from a number of product variants only for a given user role? I need to exclude tax on retail products for users with a resale license only and charge tax for other products & variants.
add_filter( 'woocommerce_product_get_tax_class', 'change_tax_class_user_role', 10, 2 );
add_filter( 'woocommerce_product_variation_get_tax_class', 'change_tax_class_user_role', 10, 2 );
function change_tax_class_user_role( $tax_class, $product ) {
$excluded_variation_id = 618;
$targeted_user_role = 'ResellerCO';
if ( $product->is_type('variation') && $product->get_id() == $excluded_variation_id ) {
return $tax_class;
}
elseif ( current_user_can( $targeted_user_role ) ) {
return 'Reduced rate';
}
return $tax_class;
}
Hi you should try in_array() for compair multiple variation id
add_filter( 'woocommerce_product_get_tax_class', 'change_tax_class_user_role', 10, 2 );
add_filter( 'woocommerce_product_variation_get_tax_class', 'change_tax_class_user_role', 10, 2 );
function change_tax_class_user_role( $tax_class, $product ) {
$excluded_variation_id = array (618, 1380);
$targeted_user_role = 'ResellerCO';
$product_id = $product->get_id();
if ( $product->is_type('variation') && in_array($product_id, $excluded_variation_id) ) {
return $tax_class;
}
elseif ( current_user_can( $targeted_user_role ) ) {
return 'Reduced rate';
}
return $tax_class;
}