Недавно клиент поставил интересную задачу: запретить кириллицу при оформлении заказа в Woocommerce.
У клиента магазин на WordPress. И хотя сайт магазина на русском языке, доставка происходит из Китая, где кириллицу не понимают. Клиенту приходилось самостоятельно переводить адресные данные покупателей на английский язык, что было неудобно и неправильно.

Интересно, что нигде в интернете решение подобной задачи не встречается. Встречается код для проверки поля телефона (индекса) на ввод только цифр, а также код для проверки на «текст». Последний, однако, не пропускает цифры и специальные символы.

Итак, полное описание условий задачи:

  • CMS WordPress, плагин магазина WooCommerce
  • Запретить вводить кириллические символы в поля на странице оформления заказа /checkout/
  • Разрешить вводить следующие символы: латиница (прописные и строчные), пробел, специальные символы (оба слэша, точка, запятая, скобки, дефис)

Последний пункт обусловлен тем, что наш код будет распространяться на все поля заказа. А в поле «Телефон» могут быть скобки и дефис, в поле «Адрес» могут быть запятая, точка и «косые черточки».

Запретить кириллицу: код для Вордпресс

В ходе разработки мы подобрали код, которых хорошо показал себя в работе именно на странице чекаута.

Как разрешить вводить только латиницу в Вукомерс

Нижеследующий код необходимо вставить в конец файла functions.php в вашей дочерней теме WP.

/* Speedplus.com.ua NO CYRILLIC = ALLOW ONLY LATIN LETTERS, NUMBERS AND SOME MORE CHARACTERS AT CHECKOUT */
add_action('woocommerce_checkout_process', 'Speedplus_com_ua_latin_checkout_fields');

function Speedplus_com_ua_latin_checkout_fields() {
    $billing_address_1 = filter_input(INPUT_POST, 'billing_address_1');
    $ship_to_different_address = filter_input(INPUT_POST, 'ship_to_different_address');
    $shipping_address_1 = filter_input(INPUT_POST, 'billing_address_1');

	if (strlen(trim(preg_replace('/^[A-Za-z0-9.\\-\\/\\\,()\s+]+$/', '', $billing_address_1))) > 0) {
        wc_add_notice(__('Пожалуйста, напишите <strong>Адрес</strong> латиницей.'), 'error');
    }
    // Check Shipping to different address
    if (!empty($ship_to_different_address)) {
	if (strlen(trim(preg_replace('/^[A-Za-z0-9.\\-\\/\\\,()\s+]+$/', '', $shipping_address_1))) > 0) {
        wc_add_notice(__('Пожалуйста, напишите <strong>Адрес</strong> латиницей.'), 'error');
    }
    }
}

В примере написано правило только для поля billing_address_1 (Адрес), но вы по аналогии можете добавить нужное количество условных операторов.

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

Запрет кириллицы на Вордпресс

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *