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."

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

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

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

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

Что нового в WordPress 4.8

WordPress Version 4.8, названная «Evans» в честь джазового пианиста и композитора Уильяма Джона «Bill» Evans, доступна для загрузки или обновления на панели инструментов WordPress 8 июня 2017 года. [...]

Что нового в WordPress 4.7

WordPress 4.7 посвящен Саре Воан, известной джазовой певице середины прошлого века. В отличие от предыдущих обновлений, новогодний релиз WordPress 4.7 получился действительно потрясающим с большим количеством приятных нововведений, [...]

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

No comments yet.

RSS feed for comments on this post.

Leave a comment