Как автоматизировать сброс пароля после взлома в WordPress

Диагностика проблемы: когда и почему нужен автоматический сброс пароля

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

Как работает сброс пароля по умолчанию в WordPress

В WordPress для смены пароля пользователь обычно получает письмо с ссылкой на восстановление пароля через функцию wp_lostpassword_url(). Без доработок массовый сброс паролей невозможен без вмешательства администратора вручную. Значит, нам нужно написать кастомный скрипт, который за одну операцию отправит письма или сбросит пароли для группы пользователей.

Пошаговое решение: автоматический сброс паролей для всех пользователей с определённой ролью

1. Создаём функцию для сброса пароля и отправки письма

function reset_passwords_for_role($role = 'administrator') {
    $users = get_users(['role' => $role]);
    foreach ($users as $user) {
        $new_password = wp_generate_password(12, false); // Генерируем новый пароль
        wp_set_password($new_password, $user->ID); // Устанавливаем новый пароль

        // Формируем письмо пользователю
        $to = $user->user_email;
        $subject = 'Ваш пароль на сайте был сброшен';
        $message = "Здравствуйте, {$user->display_name}!\n\n" .
                   "Ваш пароль был сброшен по соображениям безопасности.\n" .
                   "Ваш новый пароль: {$new_password}\n" .
                   "Пожалуйста, войдите и смените пароль на более удобный и безопасный.\n" .
                   wp_login_url();
        wp_mail($to, $subject, $message);
    }
}

2. Запускаем сброс пароля через WP-CLI или вручную

Для запуска функции можно создать отдельный PHP-файл в корне сайта, подключить WordPress и вызвать reset_passwords_for_role('administrator');. Или добавить временный экшен в functions.php с последующим удалением:

add_action('init', function() {
    if (current_user_can('administrator') && isset($_GET['reset_admin_passwords'])) {
        reset_passwords_for_role('administrator');
        wp_die('Пароли сброшены и письма отправлены.');
    }
});

После вызова https://ваш-сайт.ru?reset_admin_passwords=1 функция выполнится.

Проверка результата после внедрения

  • Все пользователи с ролью administrator должны получить email с новым паролем.
  • Попытка входа с предыдущим паролем должна завершаться ошибкой.
  • В базе данных у пользователей в таблице wp_users поле user_pass должно содержать новый хэш пароля.

Частые ошибки и как их исправить

  • Письма не отправляются. Проверьте настройки почты на сервере и функцию wp_mail. Можно использовать SMTP-плагин для надёжной отправки.
  • Функция не срабатывает при вызове по URL. Убедитесь, что вы вошли как администратор и параметр в URL указан верно.
  • Пользователи не могут войти после сброса. Проверьте, что пароли действительно сменились, а письма корректно доставляются.

Практические советы по безопасности и производительности

  • Ограничьте доступ к скрипту сброса паролей только администраторам, чтобы предотвратить злоупотребления.
  • Рекомендуется сразу после массового сброса паролей предложить пользователям сменить пароли через их личный кабинет.
  • Для больших сайтов с тысячами пользователей используйте WP-CLI скрипты — они более производительны и не зависят от HTTP-запросов.
  • Используйте SMTP-серверы и логи отправленных писем для контроля доставки.

Сравнение методов автоматизации сброса пароля

МетодОписаниеПлюсыМинусы
Плагин массового сбросаГотовые решения, как Force Password ChangeПростота использования, GUIНагрузка, возможные баги, зависимость от поддержки
WP-CLI скриптКомандная строка для массового сбросаВысокая производительность, автоматизацияТребует SSH доступа, навыков CLI
Кастомный PHP-скриптСобственная функция в теме или плагинеГибкость, интеграция с логикой сайтаТребует разработки и тестирования
Как изменить метод авторизации в WordPress на токены для повышения безопасности
31.12.2025
Как изменить время сессии в WordPress для повышения безопасности
03.01.2026
Как запретить удаление пользователей в WordPress для повышения безопасности
23.04.2026
Как автоматизировать откат пароля в WordPress после взлома
30.04.2026
Как добавить логику отключения входа на wp-login.php по времени в WordPress
11.02.2026

wp-login.php - это страница входа в системе управления вордпресс. Если Вы хотите изменить внешний вид страницы входа - читайте здесь. Если вам нужно защитить админку - подробный мануал. Вы можете установить плагин Clearfy, в котором есть функция защиты админки и страницы входа.