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

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

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

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

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

Пример: на сайте wptemp.ru часто задают вопросы, как сделать регистрацию более безопасной и как удалять пользователей по определённым критериям без плагинов — это и будет темой нашей статьи.

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

Если вам нужно просто отключить регистрацию, самый простой способ — убрать ссылку на регистрацию и запретить форму регистрации. В стандартной теме WordPress регистрация включается через настройки — Настройки > Общие > Членство > любой может регистрироваться. Уберите галочку, и регистрация отключится.

Однако если на сайте есть кастомные формы или темы с формой регистрации, потребуется программное решение. Для этого используйте следующий код в файле functions.php вашей темы или в отдельном плагине:

function wptemp_disable_registration() {
    if (strpos($_SERVER['REQUEST_URI'], 'wp-login.php?action=register') !== false) {
        wp_redirect(home_url());
        exit;
    }
}
add_action('init', 'wptemp_disable_registration');

Этот код при попытке перейти на стандартную страницу регистрации перенаправит пользователя на главную страницу сайта.

Удаление ссылки на регистрацию из меню и виджетов

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

Например, если у вас в меню есть пункт «Регистрация», можно удалить его через админку или программно:

function wptemp_remove_register_menu_link($items, $args) {
    foreach ($items as $key => $item) {
        if (strpos($item->url, 'action=register') !== false) {
            unset($items[$key]);
        }
    }
    return $items;
}
add_filter('wp_nav_menu_objects', 'wptemp_remove_register_menu_link', 10, 2);

Как программно изменить процесс регистрации пользователей

Если нужно изменить стандартную регистрацию, например, добавить дополнительную проверку, можно использовать хуки WordPress, такие как registration_errors и user_register.

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

function wptemp_restrict_email_domain($errors, $sanitized_user_login, $user_email) {
    if (!preg_match('/@example\.com$/', $user_email)) {
        $errors->add('invalid_email_domain', __('Регистрация возможна только с почты @example.com'));
    }
    return $errors;
}
add_filter('registration_errors', 'wptemp_restrict_email_domain', 10, 3);

Этот код проверит email и не позволит зарегистрироваться с других доменов.

Добавление дополнительных полей в форму регистрации

Чтобы добавить свои поля, потребуется вывести их на страницу регистрации и сохранить.

Пример добавления поля «Телефон»:

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

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

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

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

Как программно удалить пользователей по определённым критериям

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

Пример функции для удаления пользователей, у которых нет опубликованных записей и дата регистрации старше 30 дней:

function wptemp_delete_inactive_users() {
    $args = [
        'role__in' => ['subscriber', 'contributor'],
        'meta_query' => [],
        'date_query' => [
            [
                'before' => '30 days ago',
            ],
        ],
        'fields' => 'ID',
        'number' => -1,
    ];
    $user_query = new WP_User_Query($args);
    $users = $user_query->get_results();

    foreach ($users as $user_id) {
        $posts_count = count_user_posts($user_id);
        if ($posts_count === 0) {
            wp_delete_user($user_id);
        }
    }
}
// Запускайте эту функцию вручную или через cron
// wptemp_delete_inactive_users();

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

Интеграция с плагинами WPSHOP для расширения функционала регистрации

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

Плагин Expert Review может помочь в организации подтверждения и проверки новых пользователей с помощью отзывов или экспертной оценки.

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

Выводы и рекомендации

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

Внимательно тестируйте свои изменения на тестовом сайте, чтобы избежать блокировки реальных пользователей. Для более сложных задач можно дополнительно использовать готовые решения с сайта WPSHOP.

Как использовать WooCommerce хуки для динамического изменения цен товаров
18.04.2026
Оптимизация WooCommerce: как автоматически удалять старые статусы заказов через функции
20.05.2026
Как использовать Temporary Auth Cookie в WordPress для беспроблемного входа
23.01.2026
Как установить и настроить ограничение числа регистраций в WordPress
04.02.2026
WooCommerce: как реализовать авторизацию через социальные сети своими силами
09.06.2026