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: 57%

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

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

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

YEP for WordPress

Я думаю, ни для кого не секрет, что стандартные методы для вставки видео на сайт (с использованием iframe или embed) замедляют загрузку вашей страницы. Дело в том что [...]

Что нового в WordPress 5.1

WordPress 5.1 «Бетти» был выпущен 21 февраля 2019 года. Назван он в честь американской джазовой певицы Бетти Картер. WordPress 5.0 был загружен более 35 миллионов раз и сейчас 5.1 [...]

Что нового в WordPress 5

WordPress 5.0, названный в честь джазового музыканта Bebo, стал доступен с 6-го декабря 2018 года. Вы можете скачать его или обновиться автоматически через панель управления WordPress. Если вы [...]

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

No comments yet.

RSS feed for comments on this post.

Leave a comment