Установка заранее известного (своего) пароля приложения
Допустим мы хотим в качестве пароля приложения, установить нужный (определенный, заранее известный) пароль.
В 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 ) ) */
Название приложения можно посмотреть в админке, в профиле пользователя для которого нужно обновить пароль приложения: