В современных проектах на WordPress часто требуется реализовать удобную и безопасную регистрацию новых пользователей с подтверждением email. Это снижает количество спама, повышает качество базы пользователей и улучшает взаимодействие с аудиторией. В этой статье мы подробно разберем, как создать такую регистрацию с автозаполнением формы, отправкой письма для подтверждения и активацией аккаунта, используя собственный код и популярные плагины.
Почему важно подтверждение email при регистрации в WordPress
Стандартная регистрация пользователей в WordPress не предусматривает проверку email адреса, что создает риски регистрации ботов и фейковых аккаунтов. Подтверждение email решает несколько задач:
- Гарантирует, что пользователь владеет указанным адресом.
- Уменьшает спам и фальшивые регистрации.
- Повышает качество базы для рассылок и коммуникации.
- Обеспечивает дополнительную безопасность.
Поэтому часто требуется добавить подтверждение email в процесс регистрации.
Использование плагина WP User Manager для регистрации с подтверждением email
Один из удобных и бесплатных плагинов для реализации регистрации с подтверждением email — WP User Manager. Он позволяет создавать красивые формы регистрации, поддерживает подтверждение email и расширяемый функционал.
Основные шаги:
- Установите и активируйте плагин WP User Manager.
- В настройках плагина включите опцию «Подтверждение email» (Email Confirmation).
- Настройте шаблон письма для подтверждения.
- Используйте шорткод
[wum_register]для вывода формы регистрации на странице.
Плагин сам организует отправку письма с уникальной ссылкой активации. Пока пользователь не подтвердит email — аккаунт будет неактивен.
Автозаполнение формы регистрации с помощью JavaScript
Чтобы улучшить UX, можно добавить автозаполнение формы регистрации, например, подставляя email из URL или локального хранилища. Например, такой скрипт:
document.addEventListener('DOMContentLoaded', function() {
const urlParams = new URLSearchParams(window.location.search);
const email = urlParams.get('email');
if(email) {
const emailInput = document.querySelector('input[name="user_email"]');
if(emailInput) {
emailInput.value = decodeURIComponent(email);
}
}
});Так вы можете отправлять ссылку на регистрацию с параметром email, и форма будет автоматически заполнена.
Реализация собственного подтверждения email без плагинов
Если нужен полный контроль, можно реализовать регистрацию с подтверждением email через собственный код в functions.php или в своем плагине. Основные шаги:
- Создать кастомную форму регистрации с полями.
- Обработать отправку формы, создать пользователя с ролью “pending” или отключенным.
- Сгенерировать уникальный токен подтверждения и сохранить его в user meta.
- Отправить email с ссылкой для активации (с токеном).
- Создать обработчик активации — по переходу по ссылке активировать аккаунт.
Пример кода для создания пользователя и отправки письма
function hueman_register_user() {
if ( ! empty($_POST['hueman_register_nonce']) && wp_verify_nonce($_POST['hueman_register_nonce'], 'hueman_register_action') ) {
$email = sanitize_email($_POST['email']);
if(email_exists($email)) {
echo 'Пользователь с таким email уже существует.';
return;
}
$password = wp_generate_password();
$user_id = wp_create_user($email, $password, $email);
if(is_wp_error($user_id)) {
echo 'Ошибка при создании пользователя.';
return;
}
update_user_meta($user_id, 'hueman_email_confirm_token', wp_generate_password(20, false));
update_user_meta($user_id, 'hueman_email_confirmed', 0);
// Отправка письма с подтверждением
$token = get_user_meta($user_id, 'hueman_email_confirm_token', true);
$confirm_link = add_query_arg(array(
'hueman_confirm' => $token,
'user' => $user_id
), site_url());
wp_mail($email, 'Подтвердите регистрацию', "Перейдите по ссылке для подтверждения: $confirm_link");
echo 'Регистрация прошла, проверьте почту для подтверждения.';
}
}Обработка подтверждения email
Добавьте в functions.php обработку GET-параметров:
function hueman_handle_email_confirmation() {
if(!empty($_GET['hueman_confirm']) && !empty($_GET['user'])) {
$user_id = intval($_GET['user']);
$token = sanitize_text_field($_GET['hueman_confirm']);
$saved_token = get_user_meta($user_id, 'hueman_email_confirm_token', true);
if($token === $saved_token) {
update_user_meta($user_id, 'hueman_email_confirmed', 1);
// Можно активировать пользователя, изменить роль, если нужно
echo 'Email успешно подтвержден!';
} else {
echo 'Неверный токен подтверждения.';
}
exit;
}
}
add_action('init', 'hueman_handle_email_confirmation');Дополнительные советы и плагины для регистрации с подтверждением
Если хочется более мощных решений, рекомендуем обратить внимание на плагины:
- WP User Manager — бесплатный, удобный, с подтверждением email.
- User Registration — поддерживает подтверждение email, много настроек.
- Profile Builder — расширенные возможности кастомизации форм и подтверждений.
Для улучшения безопасности можно добавить капчу (например, с помощью Clearfy Pro), либо ограничить регистрацию по домену email.
Интеграция с плагином Clearfy Pro для защиты от спама
Clearfy Pro позволяет легко добавить защиту от спама и ботов в формы регистрации без сложных настроек. После установки активируйте модуль защиты форм, и он автоматически добавит капчу и антиспам-фильтры.
Выводы
Регистрация с подтверждением email — это важный элемент безопасности и качества пользовательской базы. Можно использовать готовые плагины, например WP User Manager, или реализовать собственное решение с помощью кода, как показано выше. Автозаполнение формы из URL-параметров улучшит UX, а интеграция с антивирусными плагинами, такими как Clearfy Pro, защитит сайт от спама и ботов.