Selama bertahun-tahun, banyak developer WordPress mengandalkan admin-ajax.php untuk segala kebutuhan AJAX. Masalahnya, WordPress sekarang sudah punya “pemain baru” yang jauh lebih modern, cepat, dan fleksibel: WordPress REST API.
REST API ini memungkinkan aplikasi lain seperti, mobile app, SPA (single page application), hingga tools internal, berkomunikasi dengan WordPress lewat HTTP dan data JSON, tanpa harus lewat dashboard.
Apa itu WordPress REST API?
Secara sederhana, WordPress REST API adalah fitur bawaan WordPress yang memungkinkan developer mengakses dan memanipulasi data website (post, page, user, dsb.) menggunakan HTTP request standar dan format JSON.
Bayangkan website Anda seperti perpustakaan besar, dan REST API adalah pustakawan yang bisa mengambil dan mengembalikan buku (data) untuk aplikasi lain kapan saja diminta. Dengan kata lain, REST API sebagai “jalur komunikasi” yang membuat WordPress bisa berkomunikasi dengan layanan lain di internet.
Pendapat lain menekankan bahwa REST API mengizinkan aplikasi eksternal untuk create, read, update, delete (CRUD) konten WordPress melalui HTTP dan JSON, sehingga WordPress bisa jadi “content hub” untuk berbagai platform: website, mobile, bahkan aplikasi pihak ketiga.
Contoh request dasar
Misalnya kamu ingin mengambil daftar post:
GET /wp-json/wp/v2/postsuntuk mengambil daftar postGET /wp-json/wp/v2/pagesuntuk daftar halamanGET /wp-json/wp/v2/usersuntuk daftar pengguna (dengan batasan hak akses tertentu)
Dengan REST API, WordPress bisa berperan sebagai headless CMS, yaitu hanya bertugas menyediakan konten dan logika backend, sementara tampilan bisa dibangun dengan framework modern seperti React, Vue, Svelte, dan lain-lain.
Sekilas tentang REST API: Konsep Dasar

Untuk memahami WordPress REST API, ada beberapa konsep yang perlu dipegang:
- API (Application Programming Interface): Cara satu aplikasi berkomunikasi dengan aplikasi lain.
- REST (Representational State Transfer): Sekumpulan aturan yang mendefinisikan bagaimana komunikasi antar sistem dilakukan lewat website.
- HTTP Methods (aksi utama):
GET→ ambil dataPOST→ buat data baruPUT/PATCH→ update dataDELETE→ hapus data
- Route & Endpoint
- Route: path URL, misalnya
/wp-json/wp/v2/posts - Endpoint: kombinasi route + method (misal
GET /wp-json/wp/v2/postsuntuk mengambil daftar post).
- Route: path URL, misalnya
- Request & Response
- Request: apa yang dikirim klien ke server (URL, method, body)
- Response: jawaban dari WordPress, biasanya JSON yang mudah diolah di JavaScript, mobile app, dsb.
Konsep ini membuat REST API lebih terstruktur dan mudah diintegrasikan dibanding pendekatan sebelumnya.
Kenapa WordPress Memperkenalkan REST API?
WordPress REST API awalnya dirilis sebagai plugin sekitar 2015 dan masuk ke core di versi 4.7 pada tahun 2016. Tujuan utamanya adalah memodernisasi WordPress dan menjadikannya lebih fleksibel untuk kebutuhan website modern.
Beberapa alasannya:
- WordPress tidak lagi sekadar CMS tradisional, tetapi bisa jadi backend headless untuk beragam frontend (React, Vue, mobile app, dsb.).
- Memudahkan integrasi dengan tool lain: CRM, eCommerce eksternal, sistem internal, dan layanan pihak ketiga.
- Mengikuti standar industri web modern yang sangat mengandalkan API dan JSON.
Dengan REST API, WordPress bertransformasi dari “sekadar mesin blog” menjadi platform konten yang bisa digunakan untuk banyak macam aplikasi.
Masalah dengan admin-ajax.php
Pendekatan melalui admin-ajax.php disebut sebagai sistem legacy yang sudah ada sebelum REST API diperkenalkan. Ia masih berfungsi, tapi punya beberapa kekurangan penting:
- Boros resource (performance kurang)
- Setiap request
admin-ajax.phpmemuat seluruh environment admin WordPress. - Artinya, server melakukan kerja ekstra meski Anda cuma butuh sedikit data.
- Hasil pengujian oleh Delicious Brains menunjukkan endpoint REST API bisa jauh lebih cepat daripada
admin-ajax.phpkarena tidak membawa overhead admin.
- Setiap request
- Tidak mendukung HTTP verb dengan baik
- Hampir semua request lewat
admin-ajax.phpmenggunakanPOST. - Endpoint jadi kurang semantik dan sulit “terbaca” maksudnya (apakah ini ambil data, update, atau delete?).
- Hampir semua request lewat
- Struktur terbatas dan kurang rapi
- Action hanyalah string (
action=my_custom_action) yang kemudian ditangani hook di PHP. - Tidak ada routing atau validasi parameter bawaan yang jelas.
- Action hanyalah string (
Karena itu, lebih disarankan admin-ajax.php diperlakukan seperti jQuery di tema lama: boleh ada di kode legacy, tapi sebaiknya tidak muncul di proyek baru.
Perbandingan WordPress REST API vs admin-ajax.php
| Aspek | WordPress REST API | admin-ajax.php (legacy) |
|---|---|---|
| Performa | Lebih ringan, tanpa load penuh environment admin | Memuat environment admin di setiap request, lebih berat |
| HTTP Methods | Mendukung GET, POST, PUT, DELETE secara jelas dan RESTful | Praktis semua via POST, kurang semantik |
| Struktur Endpoint | Route & endpoint terdefinisi jelas, otomatis terdokumentasi di /wp-json/ | Hanya berbasis action=string, tanpa routing bawaan |
| Integrasi Eksternal | Mudah diintegrasikan dengan aplikasi lain (mobile, SPA, tools lainnya) | Lebih cocok untuk AJAX internal sederhana |
| Keamanan | Wajib permission_callback, mendorong pengecekan capability yang eksplisit | Biasanya cek hak akses dilakukan manual, rawan diabaikan |
| Standar Industri | Mengikuti pola REST API modern yang sudah umum dipahami dev | Pola khusus WordPress, kurang familiar di luar ekosistem WP |
| Dokumentasi Otomatis | Endpoint terlihat otomatis di /wp-json/ | Tidak ada auto discovery |
Secara umum, REST API menang telak untuk proyek modern, terutama jika kamu peduli dengan performa, maintainability, dan integrasi lintas platform.
Manfaat Menggunakan WordPress REST API
Beberapa manfaat utama yang perlu diketahui adalah:
- Fleksibel dan multi-bahasa pemrograman: Tidak lagi terpaku pada PHP. Anda bisa menggunakan JavaScript, Python, atau bahasa lain selama bisa mengirim HTTP request dan membaca JSON.
- Integrasi yang lebih mudah: REST API mempermudah WordPress terhubung dengan:
- CRM
- eCommerce eksternal
- Mobile apps
- Dashboard internal perusahaan
- Headless WordPress & SPA: Bisa membangun frontend dengan React / Vue / Svelte, sementara WordPress hanya fokus sebagai backend/content hub.
- Otomasi & workflow: Data WordPress bisa diambil dan diproses otomatis (backup, reporting, sinkronisasi ke sistem lain, dsb.) menggunakan skrip atau service yang memanggil REST API.
Migrasi Dari admin-ajax.php ke WordPress REST API
Untuk menggambarkan perbedaan, kami memberikan contoh bagaimana endpoint REST API jauh lebih bersih dibanding handler admin-ajax.php.
Pendekatan admin-ajax.php
Biasanya pola kodenya seperti ini:
// functions.php
add_action('wp_ajax_nama_aksi', 'handle_nama_aksi');
add_action('wp_ajax_nopriv_nama_aksi', 'handle_nama_aksi');
function handle_nama_aksi() {
// cek permission secara manual
// ambil data / proses sesuatu
wp_send_json_success([
'message' => 'Berhasil',
]);
}Lalu di JavaScript:
fetch(ajaxurl, {
method: 'POST',
body: new URLSearchParams({
action: 'nama_aksi',
}),
})
.then(res => res.json())
.then(data => console.log(data));Pendekatan WordPress REST API
Dengan REST API, Anda bisa mendefinisikan route yang lebih jelas, misalnya:
// di plugin atau mu-plugin
add_action('rest_api_init', function () {
register_rest_route('app/v1', '/contoh-endpoint', [
'methods' => 'GET',
'callback' => 'app_contoh_endpoint',
'permission_callback' => function () {
return current_user_can('manage_options');
},
]);
});
function app_contoh_endpoint(\WP_REST_Request $request) {
return [
'status' => 'ok',
'message' => 'Endpoint REST API bekerja',
];
}Kode di atas terinspirasi dari contoh Roots, tapi disesuaikan penjelasannya.
Di sisi JavaScript:
fetch('/wp-json/app/v1/contoh-endpoint', {
method: 'GET',
})
.then(response => response.json())
.then(data => {
console.log('Success:', data);
})
.catch(error => {
console.error('Error:', error);
});Keuntungannya:
- URL lebih jelas (
/wp-json/app/v1/contoh-endpoint) - Method menggunakan HTTP verb yang tepat (
GET) - Security dipaksa lewat
permission_callback - Endpoint langsung terlihat di dokumentasi otomatis REST API di
/wp-json/
Keamanan WordPress REST API
Dari sisi keamanan, REST API cukup kuat (bisa untuk membuat, update, dan hapus data), maka autentikasi merupakan kunci dalam penggunaannya.
Beberapa metode authentication yang umum:
- Cookie Authentication
- Untuk user yang sudah login di dashboard.
- Dipakai intensif di block editor (Gutenberg), yang rely pada REST API untuk membuat dan update konten.
- Application Passwords
- Memberi “password khusus” untuk aplikasi (mobile app, CRM, dsb.) yang akan mengakses REST API.
- Aman dan sudah bawaan WordPress modern.
- OAuth
- Cocok untuk integrasi tingkat lanjut, misalnya ketika banyak user eksternal mengakses konten WordPress melalui aplikasi lain.
Selain authentication, ada juga rekomendasi umum:
- Gunakan HTTPS untuk semua request REST API.
- Batasi rate (rate limiting) bila perlu.
- Manfaatkan role & capability WordPress untuk mengontrol siapa boleh melakukan apa.
Performa WordPress REST API
Seperti yang dibahas sebelumnya, REST API lebih cepat, dan bisa lebih optimal dengan beberapa trik:
- Gunakan pagination dan
per_page: REST API default-nya hanya mengembalikan 10 post per halaman, dengan maksimum 100 per page. Sisanya harus menggunakan pagination. Contoh:https://domainkamu.com/wp-json/wp/v2/posts?per_page=20&page=2Ini penting agar server tidak overload saat mengambil banyak data. - Caching response: Response REST API bisa di-cache (object cache, page cache, atau CDN) untuk mengurangi beban server.
- Filter data yang benar-benar dibutuhkan: Gunakan parameter query (seperti
?_fields=title,link) untuk mengurangi ukuran JSON sehingga lebih hemat bandwidth. - Optimasi di sisi klien: Gunakan
Fetch APIatau library HTTP modern, dan hanya panggil endpoint yang benar-benar diperlukan, tidak setiap detik tanpa alasan.
Kapan Menggunakan admin-ajax.php?

Meski WordPress REST API vs admin-ajax.php jelas dimenangkan REST API, namun admin-ajax.php masih bisa diterima dalam satu kondisi: memelihara kode legacy yang sudah ada, di mana refactor belum layak dilakukan.
Ringkasnya:
- REST API
- Untuk semua fitur baru, proyek baru, dan kebutuhan AJAX modern.
- Untuk integrasi dengan aplikasi lain dan pola arsitektur headless.
- admin-ajax.php
- Hanya untuk kode lama yang belum memungkinkan dirombak.
- Tidak disarankan muncul di codebase baru.
Kesimpulan Penggunaan REST API dan admin-ajax.php
Jika melihat keseluruhan pembahasan, WordPress REST API vs admin-ajax.php bukan sekadar perbandingan dua fitur WordPress, tetapi mencerminkan pergeseran cara membangun aplikasi website modern.
admin-ajax.phpmuncul di era ketika WordPress masih berperan besar sebagai CMS tradisional dengan sedikit interaksi dinamis. Ia masih bisa digunakan, terutama untuk kode lama yang sudah terlanjur mengandalkannya.- WordPress REST API lahir untuk menjawab kebutuhan baru: integrasi lintas platform, arsitektur headless, SPA, dan aplikasi yang intensif API. Struktur endpoint yang jelas, penggunaan HTTP method secara semantik, serta kemudahan integrasi menjadikannya pilihan yang jauh lebih relevan untuk proyek modern.
Pada konteks pengembangan WordPress modern, posisi admin-ajax.php semakin bergeser menjadi solusi lama (legacy) yang dipertahankan hanya saat memang belum memungkinkan dilakukan migrasi. Sementara itu, REST API lebih tepat dipandang sebagai fondasi utama ketika merancang fitur-fitur baru, terutama yang membutuhkan performa, skalabilitas, dan integrasi yang rapi dengan ekosistem di luar WordPress.