Сообщение корзины бесплатной доставки для определенного класса доставки, минимальной суммы и определенной страны в Woocommerce

Я хотел бы добавить сообщение в корзину для бесплатной доставки, в зависимости от минимальной суммы для определенного класса доставки и конкретной страны (у меня активна геолокация). Я изменил код из Сообщение о корзине для определенного класса доставки и минимальной общей суммы корзины в Woocommerce.

Кажется, мое решение работает, я хотел бы убедиться, что написал его правильно на всех устройствах.

add_action( ‘woocommerce_before_calculate_totals’, ‘cart_items_shipping_class_message1aa’, 20, 1 ); function cart_items_shipping_class_message1aa( $cart ){ if ( ! ( is_cart() && WC_Geolocation::geolocate_ip()[‘country’] === ‘IT’ ) || ( is_admin() && ! defined(‘DOING_AJAX’) ) ) return; $shipping_class = ‘supplier’; $min_amout = 20; $free_shipping = 50; $amout_incl_tax = 0; foreach( $cart->get_cart() as $cart_item ){ if( $cart_item[‘data’]->get_shipping_class() === $shipping_class ){ $amout_incl_tax += $cart_item[‘line_subtotal’] + $cart_item[‘line_subtotal_tax’]; } } if( $amout_incl_tax >= $min_amout && $amout_incl_tax < $free_shipping && is_cart() ){ wc_add_notice( sprintf( ‘<p><strong><font color=»green»>FREE SHIPPING on products SUPPLIER width at least 50 €</font></strong></p><a href=»/brand/supplier-slug» class=»button free»>Add %s of products from Supplier</a>’, wc_price($free_shipping — $amout_incl_tax) ), ‘notice’ ); } }

Кажется, ваш код правильный …   —  person fabiocs81    schedule 31.03.2021

Я попытался воспроизвести аналогичное сообщение (без призыва к действию) рядом с общей доставкой, заменив woocommerce_before_calculate_totals на woocommerce_after_shipping_rates и вставив функцию эха вместо wc_add_notice, но это не сработало.   —  person fabiocs81    schedule 31.03.2021

Источник: ledsshop.ru

Стиль жизни - Здоровье!