В интернет-магазине на Woocommerce есть бесплатная доставка. Если покупатель добавил в корзину товаров больше чем на 5000 рублей, то, доставка бесплатная.
Задача: добавить в корзину строку, где указана сумма, сколько еще не хватает до бесплатной доставки.
Например, покупатель добавил товара на сумму 2000 рублей. Бесплатная доставка начинается от 5000 рублей. В строке должно быть написано «Осталось 3000 ₽ до бесплатной доставки».
Если в корзине товара на 5000 и более рублей, выводим «Бесплатная доставка».
Разместить данную строку необходимо перед списком добавленных товаров
Вариант №1 — в виде уведомления
Код добавить в файл functions.php дочерней темы или с помощью плагина Индивидуальные функции
add_action( 'woocommerce_before_cart_table', 'wc_add_notice_amound_left_for_free_shipping' ); // * function wc_add_notice_amound_left_for_free_shipping() { $free_shipping_settings = get_option('woocommerce_free_shipping_settings'); // ** $amount_for_free_shipping = $free_shipping_settings['min_amount']; $cart = WC()->cart->subtotal; $remaining = $amount_for_free_shipping - $cart; if( $amount_for_free_shipping > $cart ){ $notice = sprintf( "Осталось %s ₽ до бесплатной доставки", wc_price($remaining)); wc_print_notice( $notice , 'notice' ); } }
В этом варианте мы используем встроенную функцию Woocommerce вывода уведомлений wc_print_notice.
Вариант №2 — кастомный
add_action( 'woocommerce_before_cart_table', 'wc_add_notice_amound_left_for_free_shipping' ); // * function wc_add_notice_amound_left_for_free_shipping() { $free_shipping_settings = get_option( 'woocommerce_free_shipping_settings' ); // ** $min_amount = $free_shipping_settings['min_amount']; $cart = WC()->cart->subtotal; $remaining = $min_amount - $cart; $html_start = '<p class="amound-left-for-free-shipping">'; $html_end = '</p>'; if( $min_amount > $cart ){ $notice = sprintf( "%s Осталось %s до бесплатной доставки %s ", $html_start, wc_price($remaining), $html_end); echo $notice ; } else { echo '<p class="amound-left-for-free-shipping">Бесплатная доставка</p>'; } }
В этом варианте больше возможностей для стилей.
Стили для второго варианта. Стили вставить либо в файл style.css дочерней темы или в разделе Внешний вид -> Настройки -> Дополнительные стили
.amound-left-for-free-shipping { font-size: 14px; padding: 10px 20px 10px 20px; background: #454545; display: inline-block; color: #ffffff; text-align: right; float: right; font-weight: 600; border-radius: 50px;} .amound-left-for-free-shipping .woocommerce-Price-amount.amount { color: #ffffff; }
* Мы обращаемся к таблице в базе данных wp_options к строке бесплатной доставки woocommerce_free_shipping_settings. Здесь нужно будет уточнить как данная опция записалась у вас в базе данных. По умолчанию woocommerce_free_shipping_settings, но может быть и такой вариант woocommerce_free_shipping_1_settings, или woocommerce_free_shipping_3_settings (то есть между shipping и settings добавляется цифра).
Можно зайти в базы данных через phpMyAdmin и проверить как записана данная опция у вас в базе. Или просто методом перебора (добавлять цифры к woocommerce_free_shipping_settings), выявить какой сработает.
** В зависимости от того, где вы хотите вывести данное уведомление используем соответствующий хук. В примерах выше выводим над корзиной. Хук woocommerce_before_cart_table. Выберите тот хук, который нужен. Прекрасный визуальный пример с хуками для Корзины — WooCommerce Visual Hook Guide: Cart Page и для Оформления заказа — WooCommerce Visual Hook Guide: Checkout Page
С вопросами и за помощью обращайтесь в нашу службу поддержки 24/7
Нужен качественный хостинг для сайта на WordPress?
Рекомендую, проверенные годами, хостинг Timeweb:
а также, хостинг Beget:
Средняя оценка: 5 из 5