Почему не работает сброс пароля пользователей WordPress?
Итак, я следовал инструкции ниже, чтобы сбросить свои пароли, когда забываю пароль для входа в админ-панель WordPress
https://crybit.com/reset-wordpress-users-password/
но это, похоже, не работает для другого сайта, над которым я работаю. Я не уверен почему. Я слышал, как коллеги говорили о PHP Portable Password Hashing Framework. Может кто-то объяснить мне, если действительно проблема в этом, достаточно ли просто использовать инструмент вроде этого:
http://tools.k2an.com/?page=wordpress
потому что я пробовал его, и он тоже не сработал, и у меня больше нет идей для решения. Пожалуйста, помогите.
Кто-нибудь знает, могут ли какие-либо из этих плагинов или это сообщение об ошибке быть проблемой:
medthursday@thursdaypools.com [~/public_html]# wp plugin list
Notice: Undefined index: HTTP_HOST in /home/medthursday/public_html/wp-content/plugins/simple-301-redirects/wp-simple-301-redirects.php on line 271
+--------------------------------------------+----------+-----------+------------+
| name | status | update | version |
+--------------------------------------------+----------+-----------+------------+
| advanced-custom-fields-pro | active | available | 5.5.0 |
| akismet | inactive | available | 3.2 |
| custom-post-type-ui | active | available | 1.4.3 |
| hc-custom-wp-admin-url | active | none | 1.3.2 |
| hello | inactive | none | 1.6 |
| wd-instagram-feed | active | available | 1.1.16 |
| post-types-order | active | available | 1.9 |
| regenerate-thumbnails | active | none | 2.2.6 |
| remove-query-strings-from-static-resources | active | available | 1.3.1 |
| simple-301-redirects | active | none | 1.07 |
| sucuri-scanner | active | none | 1.8.3 |
| sumome | active | available | 1.22 |
| theme-check | inactive | none | 20160523.1 |
| updraftplus | active | available | 1.12.29 |
| user-role-editor | active | available | 4.31 |
| wordfence | active | available | 6.2.6 |
| wordpress-importer | active | none | 0.6.3 |
| wp-pagenavi | active | none | 2.91 |
| wordpress-seo | active | available | 3.8 |
+--------------------------------------------+----------+-----------+------------+

Возможно, это не тот ответ, который вы ищете, но попробуйте один из следующих вариантов – вдруг поможет?!
Конечно, у вас есть доступ по FTP или SSL.
Если у вас нет ни одного из них, дальше можно не читать!
Старая добрая идея сделать бэкап в данном случае файла
functions.php
перед внесением изменений – это мудро и может быть очень важно.
Для начала активируйте режим отладки в wp-config.php
, чтобы увидеть (надеемся) возможные ошибки, которые беспокоят WordPress.
Вариант 1:
Добавьте в functions.php
следующий код, если ваш администратор имеет ID номер 1:
/**
* Подробнее {@link https://codex.wordpress.org/Function_Reference/wp_set_password}
*/
$user_id = 1;
$password = 'newpasswd';
wp_set_password( $password, $user_id );
Важно: Этот код нужно удалить после ОДНОЙ загрузки страницы, иначе пароль будет сбрасываться при каждой загрузке, возвращая пользователя на страницу входа.
Замените значения на свои! Если администратор не имеет user_id
равного 1, и вы не знаете, какой именно ID нужен, пропустите этот вариант. (не стоит пробовать!)
После добавления кода попробуйте войти на сайт. (убедитесь, что кэш браузера очищен)
Попробуйте авторизоваться с именем администратора и новым паролем.
Получилось? Если да, удалите код из functions.php
, и всё должно работать.
Не получилось? Удалите код и попробуйте вариант 2.
Вариант 2:
Добавьте в functions.php
следующую функцию, которая *(в идеале)* создаст нового администратора. Измените $username \ $email \ $password
на свои значения. (рабочий email будет логичным выбором)
/**
* Создание нового пользователя с правами администратора
*
* Подробнее {@link https://codex.wordpress.org/Function_Reference/wp_create_user}
*
* @version WP 4.7.3
*/
add_action( 'init', 'wpse262478_add_new_adminuser' );
function wpse262478_add_new_adminuser()
{
$username = 'aname';
$email = 'whatever@domain.com';
$password = 'LZTf$f$FR)Y@xye';
$user_id = username_exists( $username );
if ( !$user_id && email_exists( $email ) == false )
{
$user_id = wp_create_user( $username, $password, $email );
if( !is_wp_error( $user_id ) )
{
$user = get_user_by( 'id', $user_id );
$user->set_role( 'administrator' );
}
}
} // конец функции
(убедитесь, что кэш браузера очищен – это всегда полезно в подобных ситуациях)
Если всё получилось, войдите с новым аккаунтом администратора (если сразу не получается, нажмите F5 для обновления несколько раз) и удалите функцию из functions.php
. Если успеха нет, всё равно удалите функцию, так как этот вариант тоже не сработал.
Надеюсь, один из вышеописанных способов помог. Если да, выдохните и расслабьтесь. Если нет, возможно, поможет следующее.
Раз уж вы уже пробовали доступ через phpMyAdmin (судя по обсуждению в чате), который тоже не сработал, можно попробовать ещё один вариант – хоть это и не всегда помогает, но попытка не пытка.
Вариант 3:
Переименуйте папку plugins
во что-то другое и снова попробуйте варианты 1 или 2.
Если получилось, войдите, верните папке имя plugins
и включайте плагины по одному, проверяя работоспособность.
Если всё работает, значит, вы нашли решение, хоть и не ответ на вопрос "почему так произошло". Но это уже тема для отдельного исследования.
P.S. Проверяли ли вы functions.php
? Возможно, там есть код, который стал причиной этой проблемы?!

Вы можете изменить свой пароль через таблицу пользователей в базе данных. Перейдите в базу данных, откройте таблицу пользователей, найдите администратора и измените пароль с выбором md5, затем сохраните таблицу.
Я думаю, вам может помочь эта ссылка: Сброс пароля Wordpress

Вы все были замечательными источниками информации. Теперь ответ. Проблема была в плагине Wordfence, который отказывался распознавать любого пользователя, созданного мной через таблицу wp_users. Если пользователь с правами администратора не создавал моего пользователя, у меня не было никакого способа войти. Пользователи, которых я создал, помечались как "Existing User No", но когда коллега с административными правами создал пользователя daniel, Wordfence распознал его как "Existing User Yes". Так что я не знаю, стоит ли злиться из-за использования этого плагина или радоваться, что он работает так хорошо.
Топ 5 неудачных попыток входа
Имя пользователя Попытки входа Существующий пользователь
media_dev 21 Нет
admin 9 Нет
earthquake2018 7 Нет
JosiahSchaefer 7 Да
daniel 5 Да

Рад слышать, что вы нашли причину, как упоминалось в варианте 3 моего ответа. Это всё равно странно, вы проверили, добавлялись ли вообще записи в базу данных (с активированным Wordfence), когда вы пытались создать другого администратора? Меня бы насторожил любой плагин, который ведёт себя подобным образом, по крайней мере, если такое поведение/ограничение не упомянуто в документации/чаво. (Я не знаком с подобными плагинами безопасности, поэтому не могу сказать точно) Если это нигде не указано, я бы сообщил разработчикам и попросил упомянуть это везде, потому что это даже мешает вам добавлять/редактировать базу данных. В любом случае, поздравляю.

Значит, когда вы сказали "ни один вариант не сработал" в ответе @Charles, вы на самом деле имели в виду, что не стали пробовать вариант 3;)

Это неверная интерпретация. Когда я сказал "ни один вариант", это включало и вариант 3 — я перепробовал все предложения как здесь, так и в других местах. Проблема была не в ответах, а в том, что я боролся с плагином под названием Wordfence, о чём даже не подозревал, так как не разрабатывал этот сайт.

Даниэль. То, что говорит @JeffreyvonGrumbkow, означает, что проблема была бы решена, если бы вы выполнили Вариант 3 и отключили свои плагины. Это исключило бы wordfence из уравнения.

@rudtek, ах, понятно, к сожалению, в тот момент я попытался деактивировать wordfence через wp-cli, но несмотря на то, что я был на сервере, wordfence отказался распознавать мои действия, и я не смог попасть в wp-admin, чтобы отключить плагины оттуда.
