get_password_reset_key() │ WP 4.4.0
Создает в БД ключ для восстановления пароля для указанного юзера и возвращает этот ключ.
Созданный ключ сохраняется в таблицу wp_users в поле user_activation_key . Перед сохранением ключ хэшируется с помощью класса PasswordHash() и к нему добавляется метка времени его создания: 1523344279:$P$B1WitfrdGBKDfc8G3ESq.shs5ljDno.
Такой ключ использует ядро WordPress в стандартной ссылке на восстановление пароля, которая отправляется на почту пользователю.
Пример кода для создания такой ссылки:
network_site_url( "wp-login.php?action=rp&key=$key&login=" . rawurlencode( $user_login ), 'login' )
// получим
// http://example.com/wp-login.php?action=rp&login=login&key=DNNipiJcP3IcasDtPqIQ
Возвращает
Строку|WP_Error
.
Ключ для сброса пароля.
WP_Error, когда пользователю запрещено создавать ключ или когда не удалось записать ключ в БД.
Использование
get_password_reset_key( $user );
$user(WP_User) (обязательный)
Объект юзера для которого нужно создать ключ.
Примеры
#1 Создадим ключ для восстановления пароля
$user = get_userdata( 1 );
echo get_password_reset_key( $user ); // ZedUm9FEt48Kp4aGb5i8
Добавить свой пример
Заметки
Global. PasswordHash. $wp_hasher Portable PHP password hashing framework instance.
Список изменений
Код get_password_reset_key() get password reset key
WP 6.7.1
function get_password_reset_key( $user ) {
global $wp_hasher;
if ( ! ( $user instanceof WP_User ) ) {
return new WP_Error( 'invalidcombo', __( '<strong>Error:</strong> There is no account with that username or email address.' ) );
}
/**
* Fires before a new password is retrieved.
*
* Use the {@see 'retrieve_password'} hook instead.
*
* @since 1.5.0
* @deprecated 1.5.1 Misspelled. Use {@see 'retrieve_password'} hook instead.
*
* @param string $user_login The user login name.
*/
do_action_deprecated( 'retreive_password', array( $user->user_login ), '1.5.1', 'retrieve_password' );
/**
* Fires before a new password is retrieved.
*
* @since 1.5.1
*
* @param string $user_login The user login name.
*/
do_action( 'retrieve_password', $user->user_login );
$password_reset_allowed = wp_is_password_reset_allowed_for_user( $user );
if ( ! $password_reset_allowed ) {
return new WP_Error( 'no_password_reset', __( 'Password reset is not allowed for this user' ) );
} elseif ( is_wp_error( $password_reset_allowed ) ) {
return $password_reset_allowed;
}
// Generate something random for a password reset key.
$key = wp_generate_password( 20, false );
/**
* Fires when a password reset key is generated.
*
* @since 2.5.0
*
* @param string $user_login The username for the user.
* @param string $key The generated password reset key.
*/
do_action( 'retrieve_password_key', $user->user_login, $key );
// Now insert the key, hashed, into the DB.
if ( empty( $wp_hasher ) ) {
require_once ABSPATH . WPINC . '/class-phpass.php';
$wp_hasher = new PasswordHash( 8, true );
}
$hashed = time() . ':' . $wp_hasher->HashPassword( $key );
$key_saved = wp_update_user(
array(
'ID' => $user->ID,
'user_activation_key' => $hashed,
)
);
if ( is_wp_error( $key_saved ) ) {
return $key_saved;
}
return $key;
}
Cвязанные функции