Найти в Дзене
Deynekin.com

Борьба со спамом в заказах WooCommerce для Wordpress

Спам боты в 99% случаев вбивают английское имя. Можно ограничить отправку spam заказов проверкой наличия русских букв в имени и фамилии.
Для проверки наличия русских букв в имени и фамилии пользователя при оформлении заказа в WooCommerce (если пользователь не зарегистрирован), можно использовать хуки WooCommerce. Мы добавим валидацию для поля "Имя" и "Фамилия" на странице оформления заказа. function validate_name_fields_at_checkout($data, $errors) { // Проверка поля "Имя" if (isset($data['billing_first_name']) && !empty($data['billing_first_name'])) { $first_name = $data['billing_first_name']; if (!preg_match('/^[А-Яа-яё\s-]+$/u', $first_name)) { $errors->add('validation', __('<strong>Ошибка:</strong> Имя должно содержать только русские буквы.', 'woocommerce')); } } else { $errors->add('validation', __('<strong>Ошибка:</strong> Поле "Имя" обязательно для заполнения.', 'woocommerce')); } // Проверка поля "Фамилия" if (isset($data['billing_last_name']) && !empty($data['billing_last_na
Оглавление

Спам боты в 99% случаев вбивают английское имя. Можно ограничить отправку spam заказов проверкой наличия русских букв в имени и фамилии.

Для проверки наличия русских букв в имени и фамилии пользователя при оформлении заказа в WooCommerce (если пользователь не зарегистрирован), можно использовать хуки WooCommerce. Мы добавим валидацию для поля "Имя" и "Фамилия" на странице оформления заказа.

function validate_name_fields_at_checkout($data, $errors) {
// Проверка поля "Имя"
if (isset($data['billing_first_name']) && !empty($data['billing_first_name'])) {
$first_name = $data['billing_first_name'];
if (!preg_match('/^[А-Яа-яё\s-]+$/u', $first_name)) {
$errors->add('validation', __('<strong>Ошибка:</strong> Имя должно содержать только русские буквы.', 'woocommerce'));
}
} else {
$errors->add('validation', __('<strong>Ошибка:</strong> Поле "Имя" обязательно для заполнения.', 'woocommerce'));
}
// Проверка поля "Фамилия"
if (isset($data['billing_last_name']) && !empty($data['billing_last_name'])) {
$last_name = $data['billing_last_name'];
if (!preg_match('/^[А-Яа-яё\s-]+$/u', $last_name)) {
$errors->add('validation', __('<strong>Ошибка:</strong> Фамилия должна содержать только русские буквы.', 'woocommerce'));
}
} else {
$errors->add('validation', __('<strong>Ошибка:</strong> Поле "Фамилия" обязательно для заполнения.', 'woocommerce'));
}
}
add_action('woocommerce_after_checkout_validation', 'validate_name_fields_at_checkout', 10, 2);

Как добавить код:

  1. Откройте файл functions.php вашей темы или дочерней темы.
  2. Вставьте код в конец файла.
  3. Сохраните изменения.

Примечания:

  • Убедитесь, что ваш сайт использует UTF-8 кодировку.
  • Если вы используете кастомные темы или плагины, код может потребовать адаптации.
  • Для более сложной валидации (например, проверка минимальной длины имени) можно расширить регулярное выражение или добавить дополнительные условия.

Тестирование:

  1. Перейдите на страницу оформления заказа.
  2. Убедитесь, что вы не авторизованы (оформляете заказ без регистрации).
  3. Попробуйте ввести имя с недопустимыми символами (например, латинские буквы или цифры).
  4. Убедитесь, что ошибка отображается корректно.
  5. Проверьте, что заказ не оформляется, если поле "Имя" или "Фамилия" содержит ошибки.

Если у вас есть дополнительные вопросы, уточните, и я помогу!