2026年11月12日
2026年11月12日
Паролі застосунків WordPress: створення, видалення і REST API
Ця стаття — локалізована версія японського оригіналу. Читати японський оригінал
Пароль застосунку (Application Password) — це окремий пароль для REST API та зовнішніх інструментів, який з’явився у WordPress 5.6. Він дає змогу не повідомляти справжній пароль для входу: його можна створювати для кожного інструмента окремо й відкликати лише той, що вже не потрібен. У цій статті описано умови використання, способи створення й видалення (адмінка, WP-CLI, PHP), роботу з REST API та що перевірити, коли щось не виходить. Матеріал звірено з документацією для розробників і вихідним кодом WordPress станом на листопад 2026 року.
Що можна, а чого не можна робити з паролем застосунку
- Його можна використовувати для автентифікації в REST API і XML-RPC. У REST API ім’я користувача й пароль застосунку надсилаються через Basic-автентифікацію.
- Для входу в адмінку (wp-login.php) він не підходить. Він призначений не для входу людини, а для програм та інструментів.
- Права такі самі, як у користувача, для якого його створено. Якщо його створив адміністратор, інструмент із цим паролем може виконувати ті самі дії, що й адміністратор. Якщо потрібно довірити лише публікацію записів, створіть користувача з роллю автора чи редактора й випускайте пароль для нього.
- Кожен пароль можна відкликати окремо. Також записуються дата й час останнього використання та IP-адреса.
Умови використання
За замовчуванням паролі застосунків працюють лише на сайтах із HTTPS або в середовищі типу local. WordPress визначає це так (wp_is_application_passwords_supported()).
return is_ssl() || 'local' === wp_get_environment_type();
На сайтах, що працюють лише по HTTP, відповідного розділу на сторінці профілю немає, оскільки пароль передавався б незашифрованим каналом.
Створення в адмінці
- Відкрийте «Користувачі» (Users) → «Профіль» (Profile) (для іншого користувача — «Користувачі» → «Усі користувачі» (All Users), а там відредагуйте потрібного користувача).
- У розділі «Паролі застосунків» (Application Passwords) внизу введіть у поле «Нова назва пароля застосунку» зрозумілу назву призначення (наприклад, скрипт для публікації, Zapier).
- Натисніть «Додати новий пароль застосунку» (залежно від версії кнопка може називатися інакше).
- Збережіть показаний 24-символьний пароль. Якщо залишити цей екран, його більше не буде показано.
Пароль показується з пробілами через кожні чотири символи, наприклад abcd EFGH 1234 ijkl MNOP 6789, але автентифікація працює і з пробілами, і без них.
Щоб відкликати пароль, натисніть кнопку відкликання в потрібному рядку списку в цьому самому розділі. Можна також відкликати всі одразу кнопкою «Відкликати всі паролі застосунків».
Створення, перегляд і видалення через WP-CLI
# Створити (щоб показати лише пароль, додайте --porcelain)
wp user application-password create admin "Скрипт для публікації" --porcelain
# Показати список (uuid потрібен для видалення)
wp user application-password list admin --fields=uuid,name,created,last_used,last_ip
# Видалити один
wp user application-password delete admin 6633824d-c1d7-4f79-9dd5-4586f734d69e
# Видалити всі паролі цього користувача
wp user application-password delete admin --all
Замість admin можна вказати ім’я користувача, адресу електронної пошти або ID користувача. Замість uuid підставте значення, яке показує результат list.
Створення, перегляд і видалення через PHP
Якщо користуватися цим із плагіна чи подібного коду, використовуйте клас WP_Application_Passwords.
<?php
$user_id = 2; // ID потрібного користувача
// Створити. У разі успіху повертається масив [пароль у відкритому вигляді, збережені дані]
$result = WP_Application_Passwords::create_new_application_password(
$user_id,
array( 'name' => 'Скрипт для публікації' )
);
if ( is_wp_error( $result ) ) {
error_log( $result->get_error_message() );
} else {
list( $password, $item ) = $result;
// $password — відкритий текст. Отримати його можна лише зараз, тож передайте користувачу безпечним способом
error_log( 'created: ' . $item['uuid'] );
}
// Отримати список (name, uuid, created, last_used, last_ip тощо)
foreach ( WP_Application_Passwords::get_user_application_passwords( $user_id ) as $item ) {
error_log( $item['name'] . ' ' . $item['uuid'] );
}
// Видалити один
// WP_Application_Passwords::delete_application_password( $user_id, $uuid );
Зберігається лише хешоване значення, а пароль у відкритому вигляді можна отримати тільки в момент створення.
Використання з REST API
У curl Basic-автентифікація додається параметром -u ім'я_користувача:пароль_застосунку. Спершу переконайтеся, що повертаються ваші дані як автентифікованого користувача.
# Перевірити, чи автентифікація проходить (якщо повернулися дані вашого користувача — усе вдалося)
curl -u "admin:abcd EFGH 1234 ijkl MNOP 6789" https://example.com/wp-json/wp/v2/users/me
# Створити запис-чернетку
curl -u "admin:abcd EFGH 1234 ijkl MNOP 6789" \
-X POST https://example.com/wp-json/wp/v2/posts \
-H "Content-Type: application/json" \
-d '{"title":"Тестовий запис","content":"Основний текст","status":"draft"}'
Якщо з PHP викликати REST API іншого сайту WordPress, заголовок Authorization потрібно сформувати самостійно.
<?php
$response = wp_remote_get(
'https://example.com/wp-json/wp/v2/users/me',
array(
'headers' => array(
'Authorization' => 'Basic ' . base64_encode( 'admin:abcd EFGH 1234 ijkl MNOP 6789' ),
),
)
);
if ( ! is_wp_error( $response ) ) {
error_log( wp_remote_retrieve_response_code( $response ) );
}
Пароль у прикладі — зразок. Справжній пароль не записуйте безпосередньо в код, а зберігайте в недоступному ззовні місці, наприклад у змінній середовища чи файлі налаштувань.
Що перевірити, якщо автентифікація не вдається
| Симптом | Що перевірити |
|---|---|
| У профілі немає розділу «Паролі застосунків» | Чи сайт працює по HTTPS. Чи не вимкнено функцію фільтром або плагіном |
/wp/v2/users/me повертає 401 |
Чи правильне ім’я користувача (логін, а не відображуване ім’я). Чи не відкликано пароль |
| Дані правильні, але запит вважається неавтентифікованим | Можливо, сервер не передає заголовок Authorization до PHP. В Apache перевірте, чи залишився у .htaccess WordPress рядок RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] |
| Помилка лише для деяких URL | Чи не обмежують REST API плагін безпеки або WAF |
Про помилки REST API загалом див. «Як виправити помилки REST API».
Вимкнення паролів застосунків
На сайтах, де вони не використовуються, цю функцію можна вимкнути повністю. Запишіть це у functions.php теми або у власному плагіні.
<?php
// Вимкнути для всього сайту
add_filter( 'wp_is_application_passwords_available', '__return_false' );
Щоб дозволити лише певним користувачам, скористайтеся фільтром для окремого користувача. У наведеному прикладі дозвіл мають лише користувачі з правами адміністратора (manage_options).
<?php
add_filter( 'wp_is_application_passwords_available_for_user', function ( $available, $user ) {
return $available && user_can( $user, 'manage_options' );
}, 10, 2 );
Як обмежити доступ до самого REST API, див. «Як обмежити доступ до REST API».
Зауваження щодо експлуатації
- Для кожного інструмента випускайте окремий пароль і давайте йому назву, з якої зрозуміло призначення. Якщо пароль витече, відкликати доведеться лише пароль цього інструмента.
- Паролі інструментів, якими ви більше не користуєтеся, негайно відкликайте. Якщо в списку дата останнього використання давня, пароль, імовірно, не використовується.
- Перегляньте, чи справді потрібно передавати пароль адміністратора зовнішньому сервісу, і випускайте пароль для користувача лише з потрібними правами.
Маєте запитання щодо WordPress? Видавець сайту перебуває в Японії й відповідає японською. Написати нам (японською)