REST API WordPress: Alasan Hanya Memblokir yang Belum Login, Bukan Mematikannya Sepenuhnya

REST API WordPress menampilkan nama pengguna situs lewat alamat wp-json bahkan kepada pengunjung yang belum login. Mematikannya sepenuhnya kadang membuat penyimpanan di editor blok gagal, jadi kami merangkum cara memblokir hanya permintaan saat belum login dan memastikannya dengan respons 401.
1️⃣ Apa Itu REST API WordPress: Alamat wp-json dan Fungsinya
REST API WordPress adalah fitur bawaan WordPress yang bertukar data situs seperti artikel, halaman, dan pengguna dalam format JSON, dan merespons di bawah /wp-json/ setelah alamat situs.
Di bawah /wp-json/, alamat dibagi per jenis data seperti [wp/v2/posts]·[wp/v2/pages]·[wp/v2/users], dan setiap alamat ini disebut endpoint. Editor blok juga mengirim permintaan ke alamat ini saat menyimpan artikel.
https://example.com/wp-json/
https://example.com/wp-json/wp/v2/posts
https://example.com/wp-json/wp/v2/pages
https://example.com/wp-json/wp/v2/users2️⃣ Nama Pengguna yang Terlihat Lewat wp-json
Endpoint [wp/v2/users] menampilkan nama tampilan dan nilai slug untuk setiap pengguna yang menerbitkan artikel, dan secara bawaan slug berisi ID login apa adanya. Akun admin di situs uji https://testpilotweb.com/ juga memiliki slug yang sama dengan ID login-nya.
Jika ID login terlihat, penyerang cukup menebak kata sandinya untuk masuk, dan layar login WordPress di situs uji mencatat 2,570 percobaan brute force dalam sehari pada 7 Oktober 2026.
Meski alamat ini diblokir, ID yang sama tetap tersisa di alamat halaman penulis (/author/ID/).
3️⃣ Yang Rusak Jika Dimatikan Sepenuhnya
Jika WP REST API dimatikan seluruhnya, yang pertama gagal adalah penyimpanan artikel di editor blok; karena itu Perfmatters, salah satu plugin optimasi WordPress, membagi cakupannya menjadi dua tingkat: [Disable for Non-Admins] dan [Disable When Logged Out]. Di situs yang punya akun penulis atau kontributor, [Disable for Non-Admins] juga memblokir penyimpanan artikel akun tersebut.
Bahkan di situs yang hanya memblokir saat belum login, setelah konektor MCP disambungkan di claude.ai, alatnya tampil 0 setelah autentikasi selesai. Log server mencatat semua permintaan MCP sebagai 401, dan penyebabnya adalah Perfmatters memblokir permintaan sebelum MCP memeriksa token.
| Nilai [Disable REST API] | Alamat users bagi pengunjung yang belum login | Penyimpanan artikel oleh akun non-admin | Cocok untuk |
|---|---|---|---|
| Default (Enabled) | Nama pengguna terlihat | Tersimpan | — |
| Disable for Non-Admins | 401 | Gagal disimpan | Situs tanpa akun penulis·kontributor |
| Disable When Logged Out | 401 | Tersimpan | Situs dengan akun penulis; tambahkan jalur pengecualian untuk koneksi token seperti MCP |
4️⃣ Pengaturan untuk Memblokir Hanya yang Belum Login (Perfmatters)
Di layar admin WordPress, buka [Pengaturan] → [Perfmatters] → [General], ubah [Disable REST API] pada bagian [Core] menjadi [Disable When Logged Out], lalu klik [Simpan Perubahan].


Bahasa yang didukung Perfmatters: Inggris (bawaan), Korea, Jerman, Prancis, Italia, Belanda, Portugis (Brasil), Rusia, Ukraina, Turki, Bulgaria, Hungaria, Indonesia, Persia, Tionghoa (Sederhana)

Jika /wp-json/wp/v2/users dibuka di jendela penyamaran tanpa login, respons 401 kembali dengan pesan [Sorry, you do not have permission to make REST API requests.], sedangkan editor blok dalam keadaan login tetap menyimpan artikel seperti biasa.
[
{
"id": 1,
"name": "User A",
"slug": "user_a",
"link": "https://example.com/author/user_a/"
}
]
{⏎ "code": "rest_authentication_error",⏎ "message": "Sorry, you do not have permission to make REST API requests.",⏎ "data": { "status": 401 }⏎}
5️⃣ Memberi Pengecualian pada Jalur yang Diblokir
Saat perlu membuka jalur tertentu saja dalam keadaan diblokir, tambahkan jalur itu ke filter [perfmatters_rest_api_exceptions] milik Perfmatters. Masalah alat 0 pada konektor MCP claude.ai diselesaikan dengan membuat snippet PHP di menu [Code] Perfmatters dan menjadikan hanya jalur MCP sebagai pengecualian.
add_filter('perfmatters_rest_api_exceptions', function($exceptions) {
$exceptions[] = '/mcp/mcp-oauth-server';
return $exceptions;
});Setelah pengecualian dibuat pun, permintaan tanpa token diblokir langsung oleh MCP dengan pesan [MCP authentication required.] dan respons 401, sementara /wp-json/wp/v2/users tetap mengembalikan respons 401 dari Perfmatters.
[MCP authentication required.]
[Hapus Tautan REST API] di bagian [Core] yang sama hanya menghapus tautan api.w.org dari kepala halaman dan header respons; WP REST API sendiri tetap merespons.
🔢 FAQ & Konten yang Direkomendasikan
MCP
WP Rocket MCP Server
Cara menghubungkan alat AI agar bisa mengosongkan cache dan mengubah pengaturan tanpa lewat layar admin.
Keamanan
Wordfence vs iThemes Security
Perbandingan dua plugin keamanan yang memblokir serangan brute force dan malware.
ℹ️ Pemberitahuan Afiliasi
Konten di situs ini berisi tautan afiliasi. Jika pengunjung membeli produk atau layanan melalui tautan tersebut, situs ini menerima komisi dari penjual. Harga yang dibayar pembeli(turun saat ada diskon promo ↓), tidak naik karena hal ini. Harga, diskon, dan informasi stok yang ditampilkan berlaku pada saat penulisan dan bisa berbeda dengan kondisi sebenarnya, jadi pastikan kembali di situs penjual sebelum membeli. Pemilihan dan penilaian produk dibuat berdasarkan standar kami sendiri, dan ada tidaknya komisi tidak memengaruhi urutan maupun isi penilaian.