Установите «Нулевой налог» Оцените несколько типов заказных продуктов бронирования

С WooCommerce я использую Путешественник премиум тема

Мне нужно деактивировать (НАЛОГ) в турах и отелях, и я пытаюсь использовать этот код для него:

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

Этот код пришел из этого ответа: Налоговый класс "Нулевая ставка" на роль пользователя в определенных идентификаторах продуктов

Но нет пути, и это не вариант. Я не могу заставить его инактивировать налог только для туров и отелей.

Мне нужна помощь, чтобы понять, как можно добиться отключения налогов только для туров и отелей в рамках моей темы в WooCommerce.


ВАЖНОЕ ОБНОВЛЕНИЕ

Я использую этот маленький код мира для вывода своих пользовательских типов продуктов из корзины, где у меня есть 3 различных типа продуктов:

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

Это выводит на моей странице корзины это (используемые типы продуктов):

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

Как я могу получить 'Zero Tax' активирован для st_tours а также st_activity типы продуктов?

Спасибо

7

Решение

С вашим вопросом о последнем обновлении это очень просто … У ваших продуктов есть собственный тип бронирования. У вас есть 3 вида бронирования, и вы хотите получить «нулевой налог» для всех типов продуктов, кроме типа «st_hotel».

Таким образом, код будет:

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;

}

Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.

Этот код проверен и работает…


ошибка в коде

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]