Webamator Blog

Блокировка доставки по городам в WooCommerce.
MENU
Home » Сайтостроителю » Блокировка доставки по городам в WooCommerce.

Блокировка доставки по городам в WooCommerce.

Когда-то я уже писал об ограничении штатов США в WooCommerce. Но похожая задача может возникнуть не только на уровне штатов, но и на уровне отдельных округов или городов – все дело в американских законах и американский административных единицах.

Немного географического ликбеза: кроме штатов, существоют инкорпорированные/неинкорпорированные островные територии (например Пуэрто-Рико или Американские Вирджинские Острова). И несмотря на то, что действие Конституции США на таких островах ограничено или имеется собственная Конституция, американские банки и службы доставки товаров работают так же само, как с обычными штатами.

Для владельца магазина на WooCommerce это означает, что иногда может понадобиться ограничение на прием платежей и отправку заказов для таких територрий.

Ранее на блоге я писал, как ограничить список штатов в WooCommerce, а сегодня покажу как можно исключить определенные города. Просто вставьте данный код в functions.php вашей темы:

add_action( 'woocommerce_checkout_process', 'webamator_validate_city' );

function webamator_validate_city() {

	$disableCityList = array (
		'Sarasota County',
		'North Point',
		'Venice',
		'Longboat Key',
	);

	$billingCity = isset( $_POST['billing_city'] ) ? trim( $_POST['billing_city'] ) : '';
	$billingCity = str_replace(array('-','_'),' ',$billingCity);
	$billingCity = ucwords($billingCity);
	if (in_array($billingCity, $disableCityList))
	{
		wc_add_notice( __( 'Sorry, but we cannot ship to any city in Sarasota County' ), 'error' );
	}

}

В примере показано ограничение для Sarasota County, North Point, Venice и Longboat Key. Кстати, это решение можно использовать не только для США, но и для любой другой страны. А также не только для города, но и для любого другого поля (например индекса или почтового адреса).
Вот пример, как ограничить доставку по какому-либо стоп-слову в поле адреса (например, вы не желаете отсылать товар если в качестве адреса указан почтовый абонентский ящик):

add_action( 'woocommerce_checkout_process', 'webamator_validate_address_1' );

function webamator_validate_address_1() {

	$billingAddress1 = isset( $_POST['billing_address_1'] ) ? trim( $_POST['billing_address_1'] ) : '';

	if (preg_match('/(box)/i',$billingAddress1))
	{
		wc_add_notice( __( 'Sorry, but we cannot ship if customer use PO boxes' ), 'error' );
	}

}

Надеюсь, вам пригодятся данные решения. А если что-то непонятно или возникли вопросы – как всегда, welcome в комменты.

Popularity: 61%

Добавлено 16 сентября 2016
Рубрика: Сайтостроителю
Метки: , ,

Если данный пост показался вам полезным или интересным, нажмите на одну из кнопок ниже - от vkontakte, facebook, tweeter или google+, чтобы о нем узнали ваши друзья. Спасибо!

Также рекомендую публикации, похожие на "Блокировка доставки по городам в WooCommerce."

Скидка 20% на все плагины Woocommerce

Дорогие друзья, рад сообщить вам что весь 2018 год предоставляю скидку 20% на все плагины и шаблоны с woocommerce.com. Чтобы воспользоваться данным предложением, вам нужно всего лишь перейти на [...]

Что нового в WordPress 4.9

15 ноября 2017 вышел WordPress версии 4.9, названный «Tipton» в честь джазового музыканта и лидера группы Билли Типтона. В этой версии вас ждут значительные улучшения интерфейса Customizer (ага, [...]

SLON – пример плагина

Повторное подключение JavaScript приводит к его повторному выполнению, то есть к проблеме производительности сайта. Кроме того, это может привести к неприятным побочным эффектам – например, если данный скрипт [...]

Single Load Only. Избавляемся от дублирования js

В данной статье я расскажу об одной из проблем Wordpress – повторному подключению javascript. Подключение скрипта несколько раз приводит к его повторному выполнению, т.е. страдает производительность. Кроме того, [...]

Нет комментариев

No comments yet.

RSS feed for comments on this post.

Leave a comment