Установка заранее известного (своего) пароля приложения

Допустим мы хотим в качестве пароля приложения, установить нужный (определенный, заранее известный) пароль.

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

Чтобы установить нужный нам пароль, для начала нужно создать данные пароля приложения. Для этого создаем пароль приложения, при этом пароль будет создан автоматически случайный. Возможно у вас уже создан пароль для приложения, тогда его просто можно будет обновить.

Используем такую кастомную функцию. Для этого копируем её, например, в файл functions.php:

/**
 * Update WordPress application password itself. Sets the password we specify.
 *
 * @param int    $user_id   ID of the user.
 * @param string $app_name  See the name on profile WP admin page.
 * @param array  $new_data {
 *     @type string $password Recommended format is: 'ukfU NAZ7 a5UG SV2s U8I2 ykkr'.
 *     @type string $app_id   ID of the application.
 *     @type string $name     New Application name.
 * }
 *
 * @return array|bool
 */
function kama_update_application_password( $user_id, $app_name, $new_data ){

	$app_passwords = WP_Application_Passwords::get_user_application_passwords( $user_id );

	foreach( $app_passwords as & $data ){

		// skip - it's not our application password
		if( $app_name !== $data['name'] )
			continue;

		// set password
		$new_password = $new_data['password'];
		$new_password = preg_replace( '/[^a-z\d]/i', '', $new_password );
		$data['password'] = wp_hash_password( $new_password );

		// another data to change
		isset( $new_data['app_id'] ) && $data['app_id'] = $new_data['app_id'];
		isset( $new_data['name'] ) && $data['name'] = $new_data['name'];
	}
	unset( $data );

	// update application passwords in DB
	$done = update_user_meta( $user_id, WP_Application_Passwords::USERMETA_KEY_APPLICATION_PASSWORDS, $app_passwords );

	if( $done )
		return $app_passwords;

	return false;
}

Теперь вызываем функцию с нужными нам параметрами, в которых укажем Пользователя, Название приложения для которого будем обновлять пароль и сам пароль:

$user_id = 10;
$app_name = 'Super App';
$new_data = [
	'password' => 'ukfU NAZ7 a5UG SV2s U8I2 ykkr',
];

$res = kama_update_application_password( $user_id, $app_name, $new_data );

print_r( $res );

/*
Array
(
	[0] => Array
		(
			[uuid] => e79943d7-0254-437c-b07a-70001bda4d32
			[app_id] => Super App
			[name] => Super App
			[password] => $P$BmG31CkQLJRmOPAiFXD0DCA9tTtmPY0
			[created] => 1608731275
			[last_used] => 1624346370
			[last_ip] => 208.88.226.229
		)

)
*/

Название приложения можно посмотреть в админке, в профиле пользователя для которого нужно обновить пароль приложения: