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

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

// отключить все регистрации
add_filter( 'wp_pre_insert_user_data', 'disable_user_registrations', 10, 2 );
function disable_user_registrations ($data, $update) {
    if( !$update ) {
        return [];
    }
    return $data;
}



Еще как вариант, не тестил



// === ПОЛНАЯ БЛОКИРОВКА РЕГИСТРАЦИИ (только админ) ===

// 1. Блокировка стандартной формы регистрации
add_action('login_init', 'disable_all_registrations_hard');
function disable_all_registrations_hard() {
    if (isset($_GET['action']) && $_GET['action'] === 'register') {
        wp_redirect(home_url(), 301);
        exit;
    }
}

// 2. Перехват создания юзеров на уровне ядра WordPress
add_filter('pre_user_login', 'block_user_creation_at_core', 10, 1);
function block_user_creation_at_core($user_login) {
    // Если это не админка и не обновление существующего юзера - блокируем
    if (!is_admin() && !defined('WP_CLI')) {
        // Проверяем, что это создание нового юзера, а не обновление
        if (!isset($_POST['user_id']) || empty($_POST['user_id'])) {
            wp_die('Регистрация новых пользователей запрещена.', 'Доступ запрещен', ['response' => 403]);
        }
    }
    return $user_login;
}

// 3. Блокировка REST API
add_filter('rest_endpoints', function($endpoints) {
    if (isset($endpoints['/wp/v2/users'])) {
        unset($endpoints['/wp/v2/users']);
    }
    if (isset($endpoints['/wp/v2/users/(?P<id>[\d]+)'])) {
        unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
    }
    return $endpoints;
});

// 4. Отключение XML-RPC
add_filter('xmlrpc_enabled', '__return_false');

// 5. Запрет на уровне настроек WordPress
add_filter('option_users_can_register', '__return_false');

// 6. Блокировка AJAX Herr Membership (именно через него регались боты)
add_action('wp_ajax_nopriv_herr_membership_register', 'block_herr_membership_ajax');
add_action('wp_ajax_herr_membership_register', 'block_herr_membership_ajax');
function block_herr_membership_ajax() {
    wp_send_json_error(['message' => 'Регистрация запрещена'], 403);
    wp_die();
}

// 7. Дополнительная защита через wp_insert_user
add_filter('wp_pre_insert_user_data', 'final_registration_block', 10, 3);
function final_registration_block($data, $update, $user_id) {
    // Разрешаем только обновление существующих юзеров админами
    if (!$update && !current_user_can('manage_options')) {
        return []; // Пустой массив вызовет ошибку и юзер не создастся
    }
    return $data;
}








guest
Закрыть меню