Сен
29
13

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

Бесплатная доставка в 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. Рекомендую.

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

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 1, средний балл: 7,00 из 7)
Загрузка...

категория Категории: WooCommerce;
теги Теги: , , , , .

комментариев 13 к статье “Настройка бесплатной доставки в WooCommerce”

  • Уставший перец   06.10.2015

    Я пользуюсь Jigoshop, там вообще проблема с русскими плагинами заточенными под нашу реальность, приходится все ручкамиделать

  • Tod   06.10.2015

    Уставший перец, никогда не слышал про Jigoshop, посмотрел — интересный плагин. Спасибо за наводку.

  • Татьяна   23.03.2016

    А не знаете как сделать чтобы самовывоз остался, не показывалась только платная доставка?

  • Tod   24.03.2016

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

  • dimmka   13.04.2016

    Подскажите,я не понял как пользоваться плагином. Сделал для примера как у вас: настроил группу, вбил цену, город. Ничего не заработало. Во всяком случае, не отобразилось ничего подобного от действия плагина ни в корзине, ни при введении данных для оплаты. Что-то делаю не так? Как вообще должна выглядеть эта менюшка с условиями бесплатной доставки.

  • Tod   13.04.2016

    dimmka, к сожалению, удаленно подсказать что конкретно вы делаете не так, не могу. Нюансов много. Смотрите, если вам не нужны дополнительные условия по бесплатной доставке, то можно остановиться на базовых возможностях WooCommerce (первая часть статьи). Настроили — проверяете работает ли. Если нет разбираетесь с этим, если да, действуете дальше — можно попробовать хак и сам плагин Advanced Free Shipping. Начните с добавления всего одного условия и проверьте работает, потом усложните его и т.д. Если на сайте есть кэш, обнулите его перед проверкой. Плагин, в общем, рабочий, нужно искать ошибку.

  • tsymbalko   29.06.2016

    Подскажите при первом варианте хака, бесплатная доставка будет просто выбираться по умолчанию а остальные способы доставки будут скрываться? вставляю указанный код, и остальные способы доставки все равно доступны

  • tsymbalko   29.06.2016

    Подскажите при хаке бесплатной доставки, при выполнений условий доставки остальные способы должны скрываться или просто будет выбран free??

  • Евгений   30.06.2016

    Здравствуйте.
    А есть возможность сделать подобное?
    Изначально стоит только самовывоз.
    При сумме заказа 1000 рублей появляется доставка в один район 200 рублей, в другой район 150 рублей и т д.
    Смысл работы как в бесплатной доставке, но в итоговую сумму чтоб при выборе района падала стоимость, указанная для данного района.

  • Tod   30.06.2016

    tsymbalko, если честно, уже не помню. У меня на сайте стоит плагин. Однако я посмотрел код по ссылке на исходник + описание, там все же сказано «Hide other shipping methods». Думаю, должны остальные методы скрываться. Нужно убедиться, что WooCommerce последней версии (для ранней другой код) + убрать для тестирования остальные модули, связанные с магазином (может быть конфликт). Если код не будет работать — ставьте плагин.

  • Tod   30.06.2016

    Евгений, по доставке в WooCommerce есть несколько плагинов с разными опциями — можете погуглить woocommerce shipping plugins. К сожалению, самые функциональные решения — платные. Видел парочку беслпатных, но в любом случае потребуется разбираться во всех тонкостях задачи.

  • Владислав   06.08.2016

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

  • Tod   07.08.2016

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

Оставить комментарий


Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

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

Последние посты
Полезные заметки
Лучшее в категории
Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости