Вопрос или проблема
Как отключить регистрацию и сброс пароля из панели администратора WordPress?
Пожалуйста, я хочу сделать это с помощью кода, не используя плагины.
Добавьте код ниже в файл functions.php:
class Password_Reset_Removed
{
function __construct()
{
add_filter( 'show_password_fields', array( $this, 'disable' ) );
add_filter( 'allow_password_reset', array( $this, 'disable' ) );
add_filter( 'gettext', array( $this, 'remove' ) );
}
function disable()
{
if ( is_admin() ) {
$userdata = wp_get_current_user();
$user = new WP_User($userdata->ID);
if ( !empty( $user->roles ) && is_array( $user->roles ) && $user->roles[0] == 'administrator' )
return true;
}
return false;
}
function remove($text)
{
return str_replace( array('Забыли свой пароль?', 'Забыли пароль'), '', trim($text, '?') );
}
}
$pass_reset_removed = new Password_Reset_Removed();
Добавьте следующее в файл functions.php вашей темы, чтобы отключить регистрацию:
add_action( 'login_head', 'hide_login_nav' );
function hide_login_nav()
{
?><style>#nav{display:none}</style><?php
}
Первая часть, удаление регистрации, не требует никакого кода. Просто снимите галочку с поля ‘Любой может зарегистрироваться‘ в ‘Настройки -> Основные -> Членство‘.
Вторая часть, удаление функции сброса пароля, состоит из двух частей: удаление
(скрытие) ссылки ‘Забыли свой пароль?‘ из формы входа и удаление (скрытие) раздела ‘Управление учетной записью‘ на странице профиля пользователя. К сожалению, удаление этих элементов нарушает как безопасность сайта (администратора), так и безопасность пользователя. Поэтому, хотя это технически возможно, я не собираюсь предоставлять решение для второй части.
Третья часть – запрашиваемый код, определенно принадлежит плагину, так как он должен быть независим от темы.
Ответ или решение
Чтобы отключить регистрацию пользователей и сброс пароля в панели управления WordPress без использования плагинов, можно воспользоваться несколькими подходами, которые требуют внесения изменений в файл functions.php
вашей темы.
Отключение регистрации пользователей
- Отключение функции регистрации через настройки WordPress:
Перейдите в панель управления WordPress и выполните следующие действия:
- Зайдите в Настройки → Общие.
- Найдите параметр Членыство и снимите галочку с опции Любой может зарегистрироваться.
Этот метод наиболее простой и не требует использования кода.
Отключение функции сброса пароля
- Для отключения функциональности сброса пароля, используйте следующий код:
Добавьте приведенный ниже код в файл functions.php
вашей активной темы.
class Password_Reset_Removed {
function __construct() {
add_filter( 'show_password_fields', array( $this, 'disable' ) );
add_filter( 'allow_password_reset', array( $this, 'disable' ) );
add_filter( 'gettext', array( $this, 'remove' ) );
}
function disable() {
if ( is_admin() ) {
$userdata = wp_get_current_user();
$user = new WP_User($userdata->ID);
if ( !empty( $user->roles ) && is_array( $user->roles ) && $user->roles[0] == 'administrator' )
return true;
}
return false;
}
function remove($text) {
return str_replace(array('Lost your password?', 'Lost your password'), '', trim($text, '?'));
}
}
$pass_reset_removed = new Password_Reset_Removed();
Скрытие ссылки ‘Забыли пароль?’
Этот код удаляет ссылку "Забыли пароль?" с экрана входа в систему, что повышает безопасность вашего сайта.
- Скрытие навигации на странице входа:
Добавьте следующий код, чтобы скрыть навигацию на странице входа (например, ссылки на регистрацию):
add_action( 'login_head', 'hide_login_nav' );
function hide_login_nav() {
echo '<style>#nav { display: none; }</style>';
}
Важные замечания
- Отключение функции сброса пароля может снизить безопасность, так как пользователи, потерявшие доступ к своим учетным записям, не смогут восстановить пароли.
- Убедитесь, что у вас есть альтернативные способы управления учетными записями пользователей, чтобы не блокировать их доступ в случае необходимости.
- Данные решения лучше всего использовать в случаях, когда требуется строгий контроль над входом пользователей, как, например, на закрытых или корпоративных сайтах.
С помощью указанных выше методов вы сможете успешно отключить регистрацию и сброс пароля в WordPress, не прибегая к помощи плагинов.