2026年11月12日

2026年11月12日

Application Password WordPress: Cara Membuat dan Memakai di REST API

Artikel ini adalah edisi lokal dari artikel asli berbahasa Jepang. Baca artikel asli berbahasa Jepang

Application Password (kata sandi aplikasi) adalah kata sandi khusus untuk REST API dan alat eksternal yang ditambahkan di WordPress 5.6. Anda tidak perlu memberikan kata sandi login yang asli, bisa membuat satu untuk tiap alat, dan hanya mencabut yang sudah tidak diperlukan. Artikel ini menjelaskan syarat pemakaiannya, cara membuat dan menghapus (layar admin, WP-CLI, PHP), cara memakainya di REST API, dan hal yang perlu diperiksa jika tidak berhasil. Isinya adalah hasil pengecekan dokumentasi pengembang dan kode sumber WordPress per November 2026.

Yang bisa dan tidak bisa dilakukan Application Password

  • Bisa dipakai untuk autentikasi REST API dan XML-RPC. Di REST API, nama pengguna dan Application Password dikirim dengan autentikasi Basic.
  • Tidak bisa dipakai untuk login ke layar admin (wp-login.php). Fungsinya bukan untuk login manusia, melainkan untuk program dan alat.
  • Hak aksesnya sama dengan pengguna yang membuatnya. Jika administrator yang membuatnya, alat yang memegang kata sandi itu bisa melakukan operasi yang sama dengan administrator. Jika Anda hanya ingin mempercayakan pemostingan, buat pengguna berperan penulis atau editor, lalu buat kata sandinya dengan pengguna itu.
  • Bisa dicabut satu per satu. Waktu terakhir dipakai dan alamat IP-nya juga dicatat.

Syarat pemakaian

Secara bawaan, Application Password hanya bisa dipakai di situs HTTPS atau situs dengan jenis lingkungan local. Penentuan WordPress adalah sebagai berikut (wp_is_application_passwords_supported()).

return is_ssl() || 'local' === wp_get_environment_type();

Pada situs yang tetap memakai HTTP, kolom ini tidak ditampilkan di layar profil. Hal ini karena kata sandi akan dikirim lewat komunikasi yang tidak terenkripsi.

Membuat di layar admin

  1. Buka "Pengguna → Profil" (Users → Profile) (untuk pengguna lain, edit pengguna yang dituju dari "Pengguna → Semua Pengguna").
  2. Di bagian "Kata Sandi Aplikasi" (Application Passwords) di bawah, pada "Nama Kata Sandi Aplikasi Baru" masukkan nama yang menunjukkan kegunaannya (contoh: Skrip Posting, Zapier).
  3. Tekan "Tambah Kata Sandi Aplikasi Baru" (tergantung versi, tampil sebagai "Add Application Password").
  4. Catat kata sandi 24 karakter yang ditampilkan. Jika Anda meninggalkan layar ini, kata sandi tidak akan ditampilkan lagi.

Kata sandi ditampilkan dengan spasi tiap empat karakter, seperti abcd EFGH 1234 ijkl MNOP 6789, tetapi autentikasi tetap berhasil dengan atau tanpa spasi.

Untuk mencabutnya, tekan tombol cabut pada baris yang dituju di daftar bagian yang sama. Anda juga bisa mencabut sekaligus dengan "Cabut semua Kata Sandi Aplikasi".

Membuat, memeriksa, dan menghapus dengan WP-CLI

# Buat (jika hanya ingin menampilkan kata sandinya, gunakan --porcelain)
wp user application-password create admin "Skrip Posting" --porcelain

# Tampilkan daftar (uuid dipakai untuk menghapus)
wp user application-password list admin --fields=uuid,name,created,last_used,last_ip

# Hapus satu
wp user application-password delete admin 6633824d-c1d7-4f79-9dd5-4586f734d69e

# Hapus semua milik pengguna tersebut
wp user application-password delete admin --all

Bagian admin bisa ditentukan dengan nama pengguna, alamat email, atau ID pengguna. Ganti uuid dengan nilai yang ditampilkan pada hasil list.

Membuat, memeriksa, dan menghapus dengan PHP

Jika ditangani dari plugin dan sebagainya, gunakan kelas WP_Application_Passwords.

<?php
$user_id = 2; // ID pengguna yang dituju

// Buat. Jika berhasil, dikembalikan array [kata sandi teks biasa, informasi yang disimpan]
$result = WP_Application_Passwords::create_new_application_password(
	$user_id,
	array( 'name' => 'Skrip Posting' )
);

if ( is_wp_error( $result ) ) {
	error_log( $result->get_error_message() );
} else {
	list( $password, $item ) = $result;
	// $password berupa teks biasa. Hanya bisa diambil pada saat ini, jadi serahkan kepada pengguna dengan cara yang aman
	error_log( 'created: ' . $item['uuid'] );
}

// Ambil daftar (name, uuid, created, last_used, last_ip, dan sebagainya)
foreach ( WP_Application_Passwords::get_user_application_passwords( $user_id ) as $item ) {
	error_log( $item['name'] . ' ' . $item['uuid'] );
}

// Hapus satu
// WP_Application_Passwords::delete_application_password( $user_id, $uuid );

Yang disimpan hanya nilai hasil hash, dan kata sandi teks biasa hanya bisa diambil pada saat dibuat.

Memakai di REST API

Di curl, tambahkan autentikasi Basic dengan -u nama_pengguna:kata_sandi_aplikasi. Pertama, pastikan informasi diri Anda dikembalikan sebagai pengguna yang terautentikasi.

# Periksa apakah autentikasi berhasil (berhasil jika informasi pengguna Anda dikembalikan)
curl -u "admin:abcd EFGH 1234 ijkl MNOP 6789" https://example.com/wp-json/wp/v2/users/me

# Buat pos draf
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":"Pos Uji","content":"Isi artikel","status":"draft"}'

Jika memanggil REST API situs WordPress lain dari PHP, buat sendiri header 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 ) );
}

Kata sandi pada contoh hanyalah contoh. Jangan menulis kata sandi yang sebenarnya langsung di kode; letakkan di tempat yang tidak dipublikasikan seperti variabel lingkungan atau file konfigurasi.

Hal yang perlu diperiksa jika autentikasi gagal

Gejala Yang diperiksa
Kolom "Kata Sandi Aplikasi" tidak ada di profil Apakah situs sudah HTTPS. Apakah dinonaktifkan oleh filter atau plugin
/wp/v2/users/me mengembalikan 401 Apakah nama pengguna benar (nama login, bukan nama tampilan). Apakah kata sandi sudah dicabut
Seharusnya benar tetapi dianggap belum login Mungkin server tidak meneruskan header Authorization ke PHP. Pada Apache, periksa apakah baris RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] di .htaccess WordPress masih ada
Hanya sebagian URL yang gagal Apakah plugin keamanan atau WAF membatasi REST API

Error REST API secara umum dijelaskan di "Cara memperbaiki error REST API".

Menonaktifkan Application Password

Pada situs yang tidak memakainya, fitur ini bisa dinonaktifkan seluruhnya. Tulis di functions.php tema atau di plugin buatan sendiri.

<?php
// Nonaktifkan untuk seluruh situs
add_filter( 'wp_is_application_passwords_available', '__return_false' );

Jika ingin mengizinkan hanya pengguna tertentu, gunakan filter per pengguna. Contoh berikut mengizinkan hanya pengguna yang memiliki hak administrator (manage_options).

<?php
add_filter( 'wp_is_application_passwords_available_for_user', function ( $available, $user ) {
	return $available && user_can( $user, 'manage_options' );
}, 10, 2 );

Untuk cara membatasi akses ke REST API itu sendiri, lihat "Cara membatasi akses ke REST API".

Catatan operasional

  • Buat kata sandi berbeda untuk tiap alat, dan beri nama agar kegunaannya jelas. Jika bocor, hanya milik alat tersebut yang dicabut.
  • Segera cabut kata sandi milik alat yang tidak dipakai lagi. Yang waktu terakhir dipakainya sudah lama di daftar mungkin sudah tidak dipakai.
  • Tinjau apakah kata sandi administrator memang perlu diberikan ke layanan eksternal, dan buat dengan pengguna yang hanya memiliki hak akses yang diperlukan.

Ada pertanyaan tentang WordPress? Penerbit situs ini berada di Jepang dan membalas dalam bahasa Jepang. Kontak (bahasa Jepang)

お気軽にご相談ください

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