8 способов изменить пароль в WordPress (авторизоваться)
В WordPress можно восстанавливать и изменять пароль пользователя, если у вас есть доступ к email пользователя или вы уже авторизованы. А как поменять (установить пароль) любому пользователю если вы не знаете пароль администратора? Ниже рассмотрим разные варианты изменения пароля для разных ситуаций, а также варианты авторизоваться в системе не имя пароля.
Узнать пароль пользователя WordPress невозможно, потому что пароли хранятся в БД в закодированном виде (в виде хэша) и единственный способ узнать пароль по хэшу — это его угадать. Такой подбор паролей называется Брут-форс.
Пароль хранится в базе данных в поле user_pass таблицы wp_users.
Авторизация — PHP
Чтобы не изменять пароль пользователя, но при этом попасть в админку, можно использовать функцию wp_set_auth_cookie().
Код ниже показывает как авторизоваться в качестве администратора не меняя его пароль.
Вставьте код в файл темы functions.php. Затем зайдите на любую страницу сайта и допишите в конец URL ?login_as_admin. После этого вы автоматически будите авторизованы как администратор.
if ( isset( $_GET['login_as_admin'] ) ) {
add_action( 'init', function () {
$users = get_users( [ 'role' => 'administrator' ] );
wp_set_auth_cookie( $users[0]->ID );
wp_safe_redirect( remove_query_arg( 'login_as_admin' ) );
exit;
} );
}
После использования этого кода, его обязательно нужно удалить!
Более продвинутый вариант кода выше:
/**
* Примеры:
* https://example.com?login_as=admin
* https://example.com?login_as=124
* https://example.com?login_as=user-test@gmail.com
*/
new class {
private string $query_val;
private string $query_key = 'login_as';
public function __construct() {
$this->query_val = $_GET[ $this->query_key ] ?? '';
if ( $this->query_val && wp_get_environment_type() === 'local' ) {
add_action( 'init', [ $this, 'init' ] );
}
}
public function init(): void {
if ( 'admin' === $this->query_val ) {
$users = get_users( [ 'role' => 'administrator', ] );
$this->set_user_and_redirect( $users[0] ?? false );
}
if ( is_numeric( $this->query_val ) ) {
$user = get_user_by( 'id', $this->query_val );
$this->set_user_and_redirect( $user );
}
if ( is_email( $this->query_val ) ) {
$user = get_user_by( 'email', $this->query_val );
$this->set_user_and_redirect( $user );
}
}
/**
* @param WP_User|false $user
*/
private function set_user_and_redirect( $user ): void {
if ( empty( $user->ID ) ) {
wp_die( 'Указанного пользователя не существует' );
}
wp_set_auth_cookie( $user->ID );
wp_safe_redirect( remove_query_arg( $this->query_key ) );
exit;
}
};
Авторизация — WP-CLI
WP-CLI скрипт ниже позволяет создавать одноразовые ссылки для входа в WordPress без ввода пароля и двухфакторной аутентификации.
Ссылка валидна короткое время (по умолчанию 5 минут) и удаляется сразу после первого входа.
Идеально подходит для быстрого доступа на Dev или Prod, когда нет активной сессии, а SSH доступ уже есть.
Пример использования:
wp temp-login create 1818 Success: https://example.com/?temp_login_token=DRilA...EUkZjD # Можно также указать логин или email пользоваетя и время жизни wp temp-login create user_login --minutes=10 wp temp-login create admin@example.com --minutes=10
Код:
GitHub<?php
/**
* Plugin Name: Temp Login Links (WP-CLI)
* Description: Генерация временных ссылок для входа через WP-CLI.
* Version: 1.3
* Author: campusboy
*
* Скачать к себе в текущую директрою
* curl -L https://gist.github.com/campusboy87/9fa31f35dce933d48a5204d978e92c29/raw -o wp-login-cli.php
*
* Dev notes / examples:
* wp temp-login create user@example.com
* wp temp-login create 123 --minutes=10
* wp temp-login create username --minutes=5
*
* wp user list --role=administrator --fields=ID,user_login,user_email
* wp user meta list 123
* URL: https://example.com/?temp_login_token=<token>
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class WP_CLI_Login {
private string $token;
private $user_id;
public function __construct() {
$this->token = $_GET['temp_login_token'] ?? '';
if ( $this->token ) {
$this->token = wp_unslash( $_GET['temp_login_token'] );
$this->user_id = $this->get_once_user_id_by_token();
if ( $this->user_id ) {
add_action( 'init', [ $this, 'auth' ] );
// Отключаем WP 2FA при входе через temp_login_token
define( 'DISABLE_2FA_LOGIN', true );
} else {
wp_die( 'Invalid or expired token', 'Temp Login', [ 'response' => 403 ] );
}
}
}
/**
* Авторизовываем
*
* @return void
*/
public function auth() {
$user = get_user_by( 'id', $this->user_id );
if ( ! $user ) {
wp_die( 'User not found', 'Temp Login', [ 'response' => 404 ] );
}
wp_clear_auth_cookie();
wp_set_current_user( $user->ID );
wp_set_auth_cookie( $user->ID, true );
do_action( 'wp_login', $user->user_login, $user );
wp_redirect( home_url() );
exit;
}
/**
* Получает ID пользователя по токену разовой авторизации
*
* @return false|int
*/
private function get_once_user_id_by_token() {
static $user_id = null;
if ( $user_id !== null ) {
return $user_id;
}
global $wpdb;
// Ищем пользователя с этим токеном
$result = $wpdb->get_row( $wpdb->prepare(
"SELECT user_id, meta_value FROM {$wpdb->usermeta}
WHERE meta_key = %s",
'temp_login_token_' . $this->token
) );
if ( ! $result ) {
return false;
}
$data = maybe_unserialize( $result->meta_value );
$user_id = (int) $result->user_id;
// Проверяем срок действия
if ( ! isset( $data['expires'] ) || $data['expires'] < time() ) {
delete_user_meta( $user_id, 'temp_login_token_' . $this->token );
return false;
}
// Удаляем токен после использования (одноразовый)
delete_user_meta( $user_id, 'temp_login_token_' . $this->token );
return $user_id;
}
}
new WP_CLI_Login();
if ( defined( 'WP_CLI' ) && WP_CLI ) {
class Temp_Login_CLI_Command {
public function create( $args, $assoc_args ) {
if ( empty( $args[0] ) ) {
WP_CLI::error( 'Specify user ID, login or email.' );
}
$who = $args[0];
$user = null;
if ( is_numeric( $who ) ) {
$user = get_user_by( 'id', intval( $who ) );
}
if ( ! $user ) {
$user = get_user_by( 'login', $who );
}
if ( ! $user ) {
$user = get_user_by( 'email', $who );
}
if ( ! $user ) {
WP_CLI::error( 'User not found.' );
}
$minutes = isset( $assoc_args['minutes'] ) ? intval( $assoc_args['minutes'] ) : 5;
if ( $minutes <= 0 ) {
$minutes = 5;
}
$token = wp_generate_password( 64, false, false );
$expires = time() + ( $minutes * MINUTE_IN_SECONDS );
// Сохраняем токен в user meta
update_user_meta( $user->ID, 'temp_login_token_' . $token, [
'expires' => $expires,
'created' => time(),
] );
$url = add_query_arg( 'temp_login_token', $token, site_url( '/' ) );
WP_CLI::success( $url );
}
/**
* Очистка истекших токенов
*/
public function cleanup( $args, $assoc_args ) {
global $wpdb;
$meta_keys = $wpdb->get_results(
"SELECT umeta_id, user_id, meta_key, meta_value
FROM {$wpdb->usermeta}
WHERE meta_key LIKE 'temp_login_token_%'"
);
$cleaned = 0;
foreach ( $meta_keys as $meta ) {
$data = maybe_unserialize( $meta->meta_value );
if ( isset( $data['expires'] ) && $data['expires'] < time() ) {
delete_metadata_by_mid( 'user', $meta->umeta_id );
$cleaned ++;
}
}
WP_CLI::success( "Cleaned {$cleaned} expired tokens." );
}
}
WP_CLI::add_command( 'temp-login', 'Temp_Login_CLI_Command' );
}
Смена пароля — профиль в админке
Если вы авторизованы, то пароль можно изменить на странице профиля Пользователи → Ваш профиль. Если вы при этом еще и администратор, то пароль можно изменить любому пользователю, перейдя в редактирование пользователя со страницы Пользователи → Все пользователи.

Смена пароля — email (восстановление пароля)
Если вы забыли пароль, но у вас есть доступ к email пользователя, то пароль можно восстановить. Для этого нужно:
- Перейти на страницу Входа:
/wp-login.php. - Кликнуть по ссылке «Забыли пароль?».
- Ввести email или имя пользователя, пароль для которого нужно восстановить.
- Перейти по ссылке на восстановление пароля, полученной на email (если указали имя пользователя, то нужно проверить email соответствующий имени пользователя).
- Ввести новый пароль в форме на которую вы попали кликнув по ссылке в письме.
- Войти на сайт используя новый пароль.

Смена пароля — phpMyAdmin
Почти все хостинг провайдеры предоставляют доступ к phpMyAdmin — панель управления базой данных.
Там установить пароль любого пользователя очень просто. Для этого нужно зайти в таблицу wp_users и нажать «редактировать» (иконку карандаша) рядом с пользователем, пароль которого хотите поменять. В результате вы увидите такую форму:

Измените хэш код в поле user_pass на новый пароль. И обязательно укажите MD5 для установленного значения (так введенный текстовый пароль будет захэширован и WP сможет его потом «распознать»).
Заметка: при первой авторизации MD5 хэш автоматически будет изменен на более надежный хэш, который используется в вашей версии WordPress.
Смена пароля — MySQL
Для установки нового пароля можно использовать SQL запрос.
Пример ниже, показывает как сменить пароль администратора WordPress, зная его логин. Тут новый пароль будет — newpass, а логин администратора — admin:
UPDATE wp_users SET user_pass = MD5('newpass') WHERE user_login = 'admin'
Если вдруг вы забыли логин, но точно помните, что вы были первым юзером на блоге, а значит ваш ID равен 1, то можно сбросить пароль по ID — WHERE ID = 1:
UPDATE wp_users SET user_pass = MD5('newpass') WHERE ID = 1;
Или можно сменить пароль зная email юзера:
UPDATE wp_users SET user_pass = MD5('newpass') WHERE user_email = 'adminko@gmail.com';
MD5('newpass') = e6053eb8d35e02ae40beeeacef203c1a
Пример запуска MySQL запроса из консоли
Для начала нужно зайти в консоль и подключиться к БД, такой командой:
mysql -u USERNAME -pPASSWORD -h HOST_NAME_OR_IP DATABASE_NAME
или без указания хоста (если вы работает в консоли из среды самого хостинга)
mysql -u USERNAME -pPASSWORD DATABASE_NAME
Далее, нужно запустить вышеупомянутый запрос, так:
mysql> UPDATE wp_users SET user_pass = MD5('newpass') WHERE user_login = 'admin';
Чтобы узнать название таблиц в базе данных my_database, используйте команду:
mysql> SHOW TABLES IN my_database; +---------------------------+ | Tables_in_my_database | +---------------------------+ | wp_commentmeta | | wp_comments | | wp_options | | wp_postmeta | | wp_posts | | wp_term_relationships | | wp_term_taxonomy | | wp_termmeta | | wp_terms | | wp_usermeta | | wp_users | +---------------------------+
Чтобы получить список логинов пользователей из таблицы юзеров, используйте команду:
mysql> SELECT user_login FROM wp_users; +----------------+ | user_login | +----------------+ | abalak | | AbamFaw | | admin | +----------------+
Смена пароля — PHP
Новый пароль можно установить PHP кодом, с помощью функции wp_set_password().
Вставьте следующий код в файл темы functions.php. Затем зайдите на любую страницу сайта и допишите в конец URL ?init_new_pass_set=anton.
В результате пароль пользователя anton будет изменен на newpass.
if( isset( $_GET['init_new_pass_set'] ) && $login = $_GET['init_new_pass_set'] ){
add_action( 'init', function() use ( $login ){
wp_set_password( 'newpass', get_user_by( 'login', $login )->ID );
wp_die( "Пароль юзера `$login` изменен" );
} );
}
После использования этого кода, его обязательно нужно удалить!
Смена пароля — WP-CLI
Установить пароль пользователя можно командой wp user update.
Этот пример показывает как для пользователя с логином USERNAME установить пароль PASSWORD:
wp user update USERNAME --user_pass="PASSWORD"
Получить список пользователей (чтобы узнать логин) можно командой wp user list:
wp user list +----+---------------+--------------+---------------------+---------------------+---------------+ | ID | user_login | display_name | user_email | user_registered | roles | +----+---------------+--------------+---------------------+---------------------+---------------+ | 4 | aleksej-nnn | Alex | alsey119@yandex.ru | 2018-04-24 21:04:24 | administrator | | 7 | denis | Denis | deis@denis.pro | 2018-06-06 23:30:54 | subscriber | | 9 | shk_user | shk_user | sheer@qsologies.com | 2018-08-11 13:27:09 | subscriber | | 8 | vladlu | vladlu | spata@famail.com | 2018-03-26 00:11:48 | editor | +----+---------------+--------------+---------------------+---------------------+---------------+
Сброс паролей — WP-CLI
Можно установить авто-сгенерированные пароли для указанных пользователей, для этого есть команда wp user reset-password.
Этот пример показывает как сбросить пароль для двух пользователей и отправить им сообщение о том что пароль был изменен.
wp user reset-password admin editor Reset password for admin. Reset password for editor. Success: Passwords reset.
Пользователь в результате получит такое сообщение на почту:
