Почему не работает сброс пароля пользователей 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
Значит, когда вы сказали "ни один вариант не сработал" в ответе @Charles, вы на самом деле имели в виду, что не стали пробовать вариант 3;)
Jebble
Это неверная интерпретация. Когда я сказал "ни один вариант", это включало и вариант 3 — я перепробовал все предложения как здесь, так и в других местах. Проблема была не в ответах, а в том, что я боролся с плагином под названием Wordfence, о чём даже не подозревал, так как не разрабатывал этот сайт.
Daniel
Даниэль. То, что говорит @JeffreyvonGrumbkow, означает, что проблема была бы решена, если бы вы выполнили Вариант 3 и отключили свои плагины. Это исключило бы wordfence из уравнения.
rudtek
@rudtek, ах, понятно, к сожалению, в тот момент я попытался деактивировать wordfence через wp-cli, но несмотря на то, что я был на сервере, wordfence отказался распознавать мои действия, и я не смог попасть в wp-admin, чтобы отключить плагины оттуда.
Daniel