Сен
29

Настройка бесплатной доставки в WooCommerce

Author admin    Category Полезное     Tags

Бесплатная доставка в WooCommerceПродолжаю публиковать заметки о плагине WooCommerce, с которым сейчас активно работаю. В данной статье речь пойдет о бесплатной доставке в интернет магазине: какие настройки для нее имеются, как улучшить базовые возможности с помощью дополнительного модуля Advanced Free Shipping, плюс рассмотрим полезный хак.

Вообще в базовой комплектации WooCommerce имеется несколько вариантов доставки: единая ставка, местная доставка, самовывоз, международная и бесплатная. Как правило, бесплатная доставка в магазинах осуществляется при достижении определенной суммы заказа (своего рода бонус покупателю). Найти настройки данного варианта доставки можете в одноименном пункте меню.

Настройка бесплатной доставки в WooCommerce

Здесь, во-первых, имеется кнопка включения бесплатной доставки. Далее вводите заголовок для отображения на сайте, а также выбираете страны, для которых данный вариант будет актуальным. В самом конце найдете параметр «Требование бесплатной доставки», который определяет условие ее активации. Здесь есть:

  • достижение минимальной суммы заказа;
  • использование действующего купона;
  • минимальная сумма И/ИЛИ купон;

На картинке выше показан первый вариант, где определяется минимальная сумма в 500грн, при достижении которой пользователь сможет выбрать бесплатную доставку.

Хаки для бесплатной доставки в WooCommerce

По-умолчанию в WooCommerce при достижении условия бесплатной доставки этот вариант просто выводится среди других:

Глюк бесплатной доставки в WooCommerce

Все, вроде как, правильно, но при этом пользователь сможет выбрать любой другой вариант доставки (например, самовывоз или почтовую пересылку) вместо бесплатной. Логичнее чтобы бесплатная доставка выбиралась автоматически. С этим поможет справиться следующий хак — добавляете его код в functions.php.

/**
 * woocommerce_package_rates is a 2.1+ hook
 */
add_filter( 'woocommerce_package_rates',
 'hide_shipping_when_free_is_available', 10, 2 );
 
/**
 * Hide shipping rates when free shipping is available
 *
 * @param array $rates Array of rates found for the package
 * @param array $package The package array/object
 being shipped
 * @return array of modified rates
 */
function hide_shipping_when_free_is_available
( $rates, $package )
 {
 
        // Only modify rates if free_shipping is present
        if ( isset( $rates['free_shipping'] ) ) {
 
                // To unset a single rate/method,
 do the following.
 This example unsets flat_rate shipping
                unset( $rates['flat_rate'] );
 
                // To unset all methods except for free_shipping,
 do the following
                $free_shipping          = $rates['free_shipping'];
                $rates                  = array();
                $rates['free_shipping'] = $free_shipping;
        }
 
        return $rates;
}

Решение найдено на сайте с документацией по WooCommerce.  Там же есть еще один интересный хак, позволяющий показывать бесплатную доставку для всех штатов, кроме выбранных. Для наших стран, к сожалению, разбиения на области нету, поэтому код не особо актуален (хотя возможно, кому-то и пригодится). Его также добавляете в functions.php.

/**
 * Hide ALL shipping options when free shipping is available and customer is NOT in certain states
 * Hide Free Shipping if customer IS in those states
 *
 * UPDATED FOR WOOCOMMERCE 2.1
 *
 * Change $excluded_states = array( 'AK','HI','GU','PR' );
 to include all the states that DO NOT have free shipping
 */
add_filter( 'woocommerce_package_rates',
 'hide_all_shipping_when_free_is_available' , 10, 2 );
 
/**
 * Hide ALL Shipping option when free shipping is available
 *
 * @param array $available_methods
 */
function hide_all_shipping_when_free_is_available( $rates,
 $package ) {
 
        $excluded_states = array( 'AK','HI','GU','PR' );
        if( isset( $rates['free_shipping'] ) AND !in_array
( WC()->customer->shipping_state, $excluded_states ) ) :
                // Get Free Shipping array into a new array
                $freeshipping = array();
                $freeshipping = $rates['free_shipping'];
 
                // Empty the $available_methods array
                unset( $rates );
 
                // Add Free Shipping back into $avaialble_methods
                $rates = array();
                $rates[] = $freeshipping;
 
        endif;
 
        if( isset( $rates['free_shipping'] ) AND in_array
( WC()->customer->shipping_state, $excluded_states ) ) {
 
                // remove free shipping option
                unset( $rates['free_shipping'] );
 
        }
 
        return $rates;
}

Плагин WooCommerce Advanced Free Shipping

Плагин WooCommerce Advanced Free Shipping

Данный модуль позволяет указать некоторые дополнительные условия для бесплатной доставки. В качестве параметров может быть:

  • общая сумма покупок;
  • страна или почтовый индекс;
  • вес, количество товара;
  • купон;
  • и многие другие.

На момент написания статьи актуальной была версия плагина 1.0.6. Минимальные требования — WordPress 3.6 и до 4.2.5 (у меня работал на 4.3.1). Оценка максимальная — 5 из 5ти. Скачать его можно тут либо найти по названию из админки.

После активации WooCommerce Advanced Free Shipping модуль появится в разделе доставки на WooCommerce.

Настройка модуля WooCommerce Advanced Free Shipping

Здесь, во-первых, его нужно включить — ставите галочку «Enable Advanced Free Shipping». Во-вторых отмечаем и вторую опцию — она скроет все варианты доставки, если условие бесплатной будут выполняться (хак в таком случае не нужен). В-третьих кликаем по кнопке «Add Free Shipping Method» дабы добавить условия доставки.

WooCommerce Advanced Free Shipping - настройка плагина

Вы можете создать несколько групп параметров, которые будут работать по принципу «ИЛИ». То есть, доставка срабатывает, если выполнится хотя бы одно из условий — либо первое, либо второе. В каждой группе условий можно совместить несколько параметров работающих по принципу «И». То есть условие выполнится, если оба утверждения правдивы. На скриншоте примера выше, думаю, хорошо понятна логика работы: бесплатная доставка будет для города «Киев» + «мин. заказ 500грн» ИЛИ для города «Київ» + «мин. заказ 500грн».

В качестве параметров вы можете выбрать действительно очень много опций: наличие определенных продуктов, категория товаров, вес/объем покупок, страна, город, почтовый код пользователя и т.п. В качестве условий выступают операторы «=», «!=», «>=», «<=».

В целом Advanced Free Shipping — отличный модуль для бесплатной доставки, который значительно расширяет базовые возможности плагина WooCommerce. Рекомендую.

Если есть что добавить по бесплатной доставке или будут какие-то вопросы, пишите в комментариях



Прокомментировать

Новые шаблоны и статьи

Рубрики

Популярные шаблоны

Мы помогаем детям


KosynokBannerNetwork