根据用户角色从多个产品变体中排除 woocommerce 税

Exclude woocommerce tax from multiple product variants based on user role

我需要帮助才能将此代码应用于多个产品变体。它按照我需要的单个产品变体的方式工作,但如果我尝试将其更改为包含其他产品的其他变体,则它不起作用。我尝试了 array (618, 1380); 这是 2 种不同的产品和变体。有人对如何仅针对给定用户角色从多种产品变体中排除税款有任何建议吗?我需要为仅具有转售许可证的用户排除零售产品税,并为其他产品和变体收取税费。

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;
}

您好,您应该尝试使用 in_array() 来获得多个变体 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;
}