Чтобы реализовать функциональность бесплатной доставки для всех товаров в корзине, если она применима к хотя бы одному из товаров, необходимо использовать фильтры и хуки в WordPress.
Перед тем, как приступить к изменениям, рекомендуется создать резервную копию вашей темы или использовать дочернюю тему, чтобы не потерять изменения при обновлении.
Для начала, необходимо добавить фильтр к функции woocommerce_package_rates
, чтобы изменить способы доставки в зависимости от наличия товара, для которого предусмотрена бесплатная доставка. Вставьте следующий код в файл functions.php
вашей темы или в функциональность плагина:
function custom_free_shipping_if_available( $rates, $package ) { $found_free_shipping = false; // Проверяем наличие товара "free_shipping" в корзине foreach( WC()->cart->get_cart() as $cart_item ) { if ( $cart_item['data']->get_shipping_class() == 'free_shipping' ) { $found_free_shipping = true; break; } } // Если найден товар с бесплатной доставкой, изменяем способы доставки if ( $found_free_shipping ) { foreach ( $rates as $rate_id => $rate ) { if ( 'free_shipping' !== $rate->method_id ) { unset( $rates[ $rate_id ] ); } } } return $rates; } add_filter( 'woocommerce_package_rates', 'custom_free_shipping_if_available', 10, 2 );
Следующим шагом необходимо настроить товар со специальной меткой или свойством, чтобы определить, что он имеет бесплатную доставку. Для этого необходимо выполнить следующие действия:
1. Зайдите в админ-панель WordPress и перейдите на страницу редактирования товара, который должен иметь бесплатную доставку.
2. В поле "Товар" или "Перейти к Товару" найдите поле "Класс доставки".
3. Введите значение "free_shipping" или любое другое значение, которое будет указывать, что доставка для этого товара бесплатна.
После сохранения ваших изменений все товары в корзине с меткой "free_shipping" будут иметь доступ только к бесплатной доставке, а другие способы доставки будут удалены из корзины при оформлении заказа.
Надеюсь, эта подробная инструкция помогла вам реализовать функциональность бесплатной доставки для всех товаров в корзине, если она предусмотрена хотя бы для одного из товаров, на вашем сайте WordPress.