wpcoding.ru wordpress WP Coding

Как удалить или изменить регистрацию пользователей в WordPress: практические способы и код

Почему важно контролировать регистрацию пользователей в WordPress

Часто на сайтах возникает необходимость ограничить или изменить процесс регистрации пользователей. Например, если сайт не предполагает открытой регистрации или требуется кастомизация формы регистрации под специфические задачи. Неконтролируемая регистрация может привести к спаму, росту нагрузки на сервер и проблемам с безопасностью. Поэтому важно знать, как правильно отключить, изменить или полностью удалить регистрацию пользователей в WordPress.

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

Как отключить регистрацию пользователей через стандартные настройки WordPress

Самый простой способ запретить регистрацию — отключить её в настройках WordPress:

  1. Перейдите в админ-панель в раздел Настройки > Общие.
  2. Снимите галочку с пункта «Любой может зарегистрироваться».
  3. Сохраните изменения.

Этого достаточно, чтобы отключить стандартную форму регистрации. Однако при этом все кастомные формы, использующие стандартные хуки, также перестанут работать. Если же вы хотите полностью убрать ссылки и формы регистрации, нужно дополнительно внести изменения в шаблоны и код.

Как удалить ссылку "Регистрация" из шаблона и меню

Даже после отключения регистрации в настройках, ссылки на регистрацию могут оставаться в шаблонах темы и меню. Чтобы убрать их, сделайте следующее:

  • Проверьте меню в разделе Внешний вид > Меню и удалите пункт регистрации.
  • Если ссылка на регистрацию встроена в код темы, найдите её и удалите. Обычно это функция wp_register() или wp_loginout().

Пример удаления ссылки регистрации из меню через фильтр:

add_filter('wp_nav_menu_items', 'wpcoding_remove_registration_link', 10, 2);
function wpcoding_remove_registration_link($items, $args) {
    if ($args->theme_location == 'primary') { // замените на вашу локацию меню
        $items = preg_replace('/<li.*>.*Регистрация.*<\/li>/iU', '', $items);
    }
    return $items;
}

Как полностью отключить регистрацию на уровне кода

Если нужно не просто скрыть ссылку, а полностью запретить регистрацию, можно сделать это программно, запретив создание новых пользователей через стандартные механизмы WordPress.

Например, можно отключить регистрацию через REST API и XML-RPC, а также запретить регистрацию через стандартные формы.

add_filter('registration_errors', 'wpcoding_disable_user_registration', 10, 3);
function wpcoding_disable_user_registration($errors, $sanitized_user_login, $user_email) {
    $errors->add('registration_disabled', __('Регистрация пользователей отключена.'));
    return $errors;
}

// Отключаем регистрацию через REST API
add_filter('rest_authentication_errors', function($result) {
    if (!empty($result)) {
        return $result;
    }
    if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'POST' && strpos($_SERVER['REQUEST_URI'], '/wp/v2/users') !== false) {
        return new WP_Error('rest_registration_disabled', __('Регистрация через REST API отключена.'), array('status' => 403));
    }
    return $result;
});

Как изменить процесс регистрации: добавляем дополнительные поля и валидацию

Если регистрация нужна, но стандартная форма не подходит, можно её расширить, добавив новые поля и валидацию. Рассмотрим пример добавления поля «Телефон» в форму регистрации.

Добавление поля «Телефон» в форму регистрации

Для начала добавим поле в форму регистрации:

add_action('register_form', 'wpcoding_add_phone_field');
function wpcoding_add_phone_field() {
    $phone = ( isset($_POST['phone']) ) ? esc_attr($_POST['phone']) : '';
    echo '<p><label for="phone">Телефон<br /></label>';
    echo '<input type="text" name="phone" id="phone" class="input" value="' . $phone . '" size="25" /></p>';
}

Валидация поля «Телефон»

add_filter('registration_errors', 'wpcoding_phone_validation', 10, 3);
function wpcoding_phone_validation($errors, $sanitized_user_login, $user_email) {
    if (empty($_POST['phone']) || !preg_match('/^\+?[0-9]{10,15}$/', $_POST['phone'])) {
        $errors->add('phone_error', __('Пожалуйста, введите корректный номер телефона.'));
    }
    return $errors;
}

Сохранение дополнительного поля в метаданных пользователя

add_action('user_register', 'wpcoding_save_phone_field');
function wpcoding_save_phone_field($user_id) {
    if (!empty($_POST['phone'])) {
        update_user_meta($user_id, 'phone', sanitize_text_field($_POST['phone']));
    }
}

Таким образом, вы расширите стандартную регистрацию, добавив пользовательское поле и проверку.

Как использовать плагин Clearfy Pro для управления регистрацией и безопасностью

Для более гибкого управления регистрацией и безопасностью пользователей рекомендую обратить внимание на плагин Clearfy Pro. Он позволяет отключать регистрацию, блокировать спам и ботов, а также оптимизировать работу сайта.

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

Как проверить, что регистрация действительно отключена

После внесения изменений важно протестировать сайт на предмет регистрации:

  • Попробуйте открыть страницу wp-login.php?action=register — должна показываться ошибка или редирект.
  • Проверьте, что ссылки на регистрацию отсутствуют на сайте.
  • Попробуйте зарегистрироваться через REST API, используя Postman или аналогичный инструмент — запрос должен быть запрещён.

Если все проверки пройдены, регистрация успешно отключена.

Выводы и рекомендации для разработчиков

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

Используйте приведённые примеры кода как основу для своих решений и адаптируйте под задачи проекта. Для расширенной функциональности и удобства рекомендую использовать проверенные плагины, например, Clearfy Pro, особенно если вы не хотите тратить время на доработки.

Также не забывайте регулярно проверять безопасность сайта и обновлять используемые плагины и темы.

×
Сделай свой сайт крутым!

Скидка -20% на премиум плагины WordPress

Выбрать плагин сейчас ⋙