Как программно изменить пароль пользователя

21 февр. 2011 г., 03:53:08
Просмотры: 39.1K
Голосов: 23

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

Теперь я столкнулся с проблемой изменения пароля пользователя. Существует ли встроенная функция WordPress, например change_user_password($user_id, $new_password)? Я удивлен, что не могу найти ничего подобного.

В худшем случае я сделаю UPDATE wp_users SET user_pass = md5($new_password) WHERE ID = $user_id, но я был бы очень удивлен, если для этого нет специальной функции.

2
Комментарии

md5 для паролей в WordPress устарел (но всё ещё поддерживается обратная совместимость — при следующем входе пользователя пароль будет перехэширован и сохранён заново). Лучше использовать API, чтобы применялась текущая и более сложная схема хэширования.

Rarst Rarst
21 февр. 2011 г. 12:27:43

Да, я тоже так думаю. Пароли, хранящиеся в базе данных, не соответствуют MD5 с входящим паролем. Так что да, они действительно перехэшируются.

Ardee Aram Ardee Aram
28 февр. 2011 г. 09:14:21
Все ответы на вопрос 2
1
39
wp_set_password( $password, $user_id );

Подробности смотрите в справочнике.

21 февр. 2011 г. 10:49:01
Комментарии

Я проголосовал за это, в основном потому, что это приводит к выполнению всего одного SQL-запроса. Отлично, если вам нужно обновить только пароль. wp_update_user выполняет около 14 запросов.

John John
16 июл. 2012 г. 22:31:23
0
17

Простая строка wp_update_user(array('ID' => $userid, 'user_pass' => 'myNeWpaSSword')) сделает всё за вас — wp_update_user() (Кодекс).

Кстати: вы знаете о Theme My Login (плагин для WordPress)? Он может предоставить вам страницу профиля на фронтенде.

21 февр. 2011 г. 04:12:39