wp_set_password()WP 2.5.0

Изменяет пароль указанного пользователя. Обновляет указанный пароль в БД и сбрасывает кэш пользователя.

Pluggable функция — эту функцию можно заменить из плагина. Это значит, что она будет работать (подключается) только после подключения всех плагинов, а до этого момента функция еще не определена... Поэтому нельзя вызывать эту и зависящие от неё функции прямо из кода плагина. Их нужно вызывать через хук plugins_loaded или позднее, например хук init.

Замена функции (переопределение) — в must-use или обычном плагине можно создать функцию с таким же названием, тогда она заменит текущую функцию.

Работает на основе: wp_hash_password()
Хуки из функции

Возвращает

null. Ничего. null

Использование

wp_set_password( $password, $user_id );
$password(строка) (обязательный)
Новый пароль, который нужно установить. Указывается текстом.
$user_id(число) (обязательный)
ID пользователя для которого нужно установить указанный пароль.

Примеры

0

#1 Сменим пароль пользователя программно

Подразумевается что этот код вызывается из функции, которая должна изменить пароль.

$new_pass = trim( wp_unslash( $_POST['new_pass'] ) );
$user_id = 1;

wp_set_password( $new_pass, $user_id );
0

#2 Пример смены (сброса) пароля через PHP

Вставьте следующий код в файл темы functions.php, а затем, чтобы активировать функцию зайдите на любую страницу сайта и допишите в URL ?init_new_pass_set=mylogin. В результате пароль пользователя mylogin будет изменен на resetpass. После этого код можно удалить.

if( isset( $_GET['init_new_pass_set'] ) ){

	add_action( 'init', function (){
		$user = get_user_by( 'login', $_GET['init_new_pass_set'] );

		wp_set_password( 'resetpass', $user->ID ); }
	);
}

Заметки

  • Global. wpdb. $wpdb WordPress database abstraction object.

Список изменений

С версии 2.5.0 Введена.

Код wp_set_password() WP 6.7.1

function wp_set_password( $password, $user_id ) {
	global $wpdb;

	$old_user_data = get_userdata( $user_id );

	$hash = wp_hash_password( $password );
	$wpdb->update(
		$wpdb->users,
		array(
			'user_pass'           => $hash,
			'user_activation_key' => '',
		),
		array( 'ID' => $user_id )
	);

	clean_user_cache( $user_id );

	/**
	 * Fires after the user password is set.
	 *
	 * @since 6.2.0
	 * @since 6.7.0 The `$old_user_data` parameter was added.
	 *
	 * @param string  $password      The plaintext password just set.
	 * @param int     $user_id       The ID of the user whose password was just set.
	 * @param WP_User $old_user_data Object containing user's data prior to update.
	 */
	do_action( 'wp_set_password', $password, $user_id, $old_user_data );
}