Задаём минимальную и максимальную длину полей на странице оформления заказа

В этом уроке мы с вами продолжаем кастомизировать поля на странице оформления заказа WooCommerce при помощи фильтр-хука woocommerce_checkout_fields.

Про страницу оформления заказа WooCommerce у меня есть подробный видеоурок.

Как задать максимальную длину поля?

Сначала давайте попробуем задать максимальную длину поля, потому что с ней разобраться значительно легче. По сути всё, что нам требуется сделать, это задать атрибут maxlength.

Если вы ещё не удалили поле «Компания», то давайте немного поиграемся именно с ним:

Нам пригодится этот код:

add_filter( 'woocommerce_checkout_fields', 'truemisha_checkout_field_maxlength', 25 );
 
function truemisha_checkout_field_maxlength( $fields ) {
	$fields[ 'billing' ][ 'billing_company' ][ 'maxlength' ] = 10;
	return $fields;
}

Не знаете куда вставлять код? – рекомендую почитать.

В целом вставили – и всё будет работать. Тут это функционирует на основе HTML-атрибута maxlength.

Как задать минимальную длину поля?

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

Как быть?

Легко – и на самом деле, если вы уже читаете мой блог, то помните пост про произвольную валидацию полей оформления заказа.

add_action( 'woocommerce_after_checkout_validation', 'truemisha_field_minlength', 25, 2 );
 
function truemisha_field_minlength( $fields, $errors ){
 
	if ( mb_strlen( $fields[ 'billing_company' ] ) < 3 ) { // меньше 3 символов
		$errors->add( 
			'validation', 
			'Можно пожалуйста написать больше букв в поле Компания?'
		);
	}
 
}

Не забывайте, что strlen() не работает с кириллицей, поэтому я использовал функцию mb_strlen().

И результат:

Минимальная длина поля на странице оформления заказа WooCommerce

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!