Как ограничить количество пользователей для регистрации на сайте WordPress?
Есть задача: ограничить количество зарегистрированных пользователей на сайте до 140. Как автоматически настроить ограничение, чтобы 141-й пользователь не смог зарегистрироваться?
Дополнительно
Ответы:
Отключаем возможность регистрации пользователей, если их более 140, и включаем обратно, если их мене 140, functions.php:
add_action('init', function() { $limit = 140; $count_users = count_users(); $total_users = $count_users['total_users']; if($total_users > $limit) { update_option('users_can_register', false); } else { update_option('users_can_register', true); } }); |
add_action('init', function() { $limit = 140; $count_users = count_users(); $total_users = $count_users['total_users']; if($total_users > $limit) { update_option('users_can_register', false); } else { update_option('users_can_register', true); } });
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Ограничение регистрации до 140 пользователей лучше делать на этапе валидации регистрации, а не постоянным переключением настройки
users_can_registerна каждомinit. Глобальную настройку легко задеть сторонним плагином, а запись в options на каждом запросе создаёт лишнюю нагрузку и может дать неожиданные эффекты.Для стандартной формы регистрации WordPress достаточно фильтра:
add_filter('registration_errors', function ($errors, $sanitized_user_login, $user_email) { $count = count_users(); $total = (int) ($count['total_users'] ?? 0); if ($total >= 140) { $errors->add('users_limit_reached', 'Регистрация закрыта: лимит пользователей достигнут.'); } return $errors; }, 10, 3);
Если регистрация идёт через WooCommerce, добавьте отдельную проверку:
add_filter('woocommerce_registration_errors', function ($errors) { $count = count_users(); if ((int) ($count['total_users'] ?? 0) >= 140) { $errors->add('users_limit_reached', 'Регистрация закрыта: лимит пользователей достигнут.'); } return $errors; });
Уточните, кого именно нужно считать.
count_users()считает всех пользователей: администраторов, редакторов, клиентов, подписчиков. Если лимит относится только к клиентам или подписчикам, нужно считать пользователей по роли, иначе несколько админов тоже займут места в лимите.Для строгого лимита при высокой одновременной регистрации может понадобиться дополнительная проверка непосредственно перед созданием пользователя, но для обычного сайта фильтра валидации обычно достаточно.