2017-02-12 16 views
7

Z woocommerce używam Traveler premii motywuSet „Zero Podatek” wartość do niektórych rodzajów produktów niestandardowych rezerwacja

muszę wyłączyć (TAX) w wycieczek i hoteli, a ja staram się użyć tego kodu bo:

add_filter('woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2);function wc_diff_rate_for_user($tax_class, $cart_item) { 

if (is_admin() && ! defined('DOING_AJAX')) 
    return; 

// Define HERE your targeted products IDs 
$products_ids_arr = array(12 ,15, 24); 

// Define HERE your targeted user roles 
$users_role_arr = array('administrator', 'userrolename'); 

//Getting the current user data 
$user_data = get_userdata(get_current_user_id()); 

foreach ($users_role_arr as $user_role) 
    if (in_array($user_role, $user_data->roles) && in_array($cart_item->id, $products_ids_arr)) { 
     $tax_class = 'Zero Rate'; 
     break; 
    } 

return $tax_class;} 

Ten kod pochodzi z tej odpowiedzi: Tax class "Zero rate" per user role on specific product ID's

Ale nie ma sposobu, a to nie jest opcja. Nie mogę zmusić cię do dezaktywacji podatku tylko na wycieczki i hotele.

Potrzebuję pomocy, aby zrozumieć, w jaki sposób mogę wyłączyć podatki tylko w przypadku wycieczek i hoteli w ramach mojego tematu w WooCommerce.


ważna aktualizacja

Używam tego mało kodu pokojowego do wyjścia moje niestandardowe typy produktów z koszyka, gdzie mam 3 różne rodzaje produktów typu:

add_action('woocommerce_before_cart_table','output_cart_raw_data'); 
function output_cart_raw_data(){ 
    $count = 0; 
foreach(WC()->cart->get_cart() as $cart_item){ 
    $count++; 
    echo 'Product ' . $count . ' has a post type of: ' . $cart_item['st_booking_data']['st_booking_post_type'] . '<br>; 
} 
} 

It Wyjścia na mojej stronie koszyka to (użyte typy produktu):

Product 1 has a post type of: st_tours 
Product 2 has a post type of: st_hotel 
Product 3 has a post type of: st_activity 

Jak mogę aktywować 'Zero Tax' dla typów produktów st_tours i st_activity?

Dzięki

+0

szablon ten https://themeforest.net/item/traveler-traveltourbooking-wordpress-theme/10822683 –

+0

@LoicTheAztec It to system rezerwacji, w konfiguracji woocommerce aktywny podatek na wszystko, motyw nie ma funkcji, aby wyłączyć podatek od wycieczek i działań, gdy rezerwacja jest na wycieczkę, temat tworzy produkt woocommerce, ale umieszcza The podatek, muszę usunąć podatek tylko za wycieczki i zajęcia –

+0

@LoicTheAztec Mój angielski nie jest t dobry, czy mogę wysłać ci motyw? A ty mi pomagasz? Dziękuję bardzo edytować moje pytanie! –

Odpowiedz

2

z pytaniem ostatniej aktualizacji, to jest bardzo proste ... Twoje produkty mają niestandardowy typ rezerwacji. Masz 3 rodzaje rodzajów rezerwacji i chcesz otrzymać stawkę "zerowego podatku" dla wszystkich typów produktów z wyjątkiem typu "st_hotel".

Więc kod będzie:

add_filter('woocommerce_product_tax_class', 'wc_diff_rate_for_user', 1, 2); 
function wc_diff_rate_for_user($tax_class, $product) { 

    if (is_admin() && ! defined('DOING_AJAX')) 
     return; 

    // Iterating through each cart items 
    foreach(WC()->cart->get_cart() as $cart_item){ 

     if($product->id == $cart_item['product_id']){ 
      $booking_post_type = $cart_item['st_booking_data']['st_booking_post_type']; 
      break; 
     } 
     $count++; 
     echo 'Product ' . $count . ' has a post type of: ' .$cart_item['st_booking_data']['st_booking_post_type']. '<br>; 
    } 

    // If the booking post type is different than 'st_hotel', the "Zero Tax" rate is applied 
    if('st_hotel' != $booking_post_type){ 
     $tax_class = 'Zero Rate'; 
    } 

    return $tax_class; 

} 

Kod idzie w pliku function.php swojej aktywne dziecko Theme (lub tematu) lub też w dowolnym pliku wtyczki.

Ten kod został przetestowany i działa ...


błąd w kodzie

+0

Dziękuję bardzo! jesteś świetny .... także błąd 500 Kiedy dodam kod w functions.php –

+0

Poprawiłem to był błąd literówki ... brakujący ';' na końcu '$ product_type = $ cart_item ['st_booking_data'] [ 'st_booking_post_type']; '... sorry :) – LoicTheAztec

Powiązane problemy