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, відповідного розділу на сторінці профілю немає, оскільки пароль передавався б незашифрованим каналом.

Створення в адмінці

  1. Відкрийте «Користувачі» (Users) → «Профіль» (Profile) (для іншого користувача — «Користувачі» → «Усі користувачі» (All Users), а там відредагуйте потрібного користувача).
  2. У розділі «Паролі застосунків» (Application Passwords) внизу введіть у поле «Нова назва пароля застосунку» зрозумілу назву призначення (наприклад, скрипт для публікації, Zapier).
  3. Натисніть «Додати новий пароль застосунку» (залежно від версії кнопка може називатися інакше).
  4. Збережіть показаний 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? Видавець сайту перебуває в Японії й відповідає японською. Написати нам (японською)

お気軽にご相談ください

お見積りへ お問い合わせへ
▲