Rio Mastri Web Designer and Developer Logo

WordPress REST API vs admin-ajax.php: Pilihan Modern untuk AJAX

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/posts untuk mengambil daftar post
  • GET /wp-json/wp/v2/pages untuk daftar halaman
  • GET /wp-json/wp/v2/users untuk 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

Bagaimana Cara Menggunakan WordPress REST API
Referensi: BlueHost

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 data
    • POST → buat data baru
    • PUT/PATCH → update data
    • DELETE → hapus data
  • Route & Endpoint
    • Route: path URL, misalnya /wp-json/wp/v2/posts
    • Endpoint: kombinasi route + method (misal GET /wp-json/wp/v2/posts untuk mengambil daftar post).
  • 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.php memuat 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.php karena tidak membawa overhead admin.
  • Tidak mendukung HTTP verb dengan baik
    • Hampir semua request lewat admin-ajax.php menggunakan POST.
    • Endpoint jadi kurang semantik dan sulit “terbaca” maksudnya (apakah ini ambil data, update, atau delete?).
  • 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.

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

AspekWordPress REST APIadmin-ajax.php (legacy)
PerformaLebih ringan, tanpa load penuh environment adminMemuat environment admin di setiap request, lebih berat
HTTP MethodsMendukung GET, POST, PUT, DELETE secara jelas dan RESTfulPraktis semua via POST, kurang semantik
Struktur EndpointRoute & endpoint terdefinisi jelas, otomatis terdokumentasi di /wp-json/Hanya berbasis action=string, tanpa routing bawaan
Integrasi EksternalMudah diintegrasikan dengan aplikasi lain (mobile, SPA, tools lainnya)Lebih cocok untuk AJAX internal sederhana
KeamananWajib permission_callback, mendorong pengecekan capability yang eksplisitBiasanya cek hak akses dilakukan manual, rawan diabaikan
Standar IndustriMengikuti pola REST API modern yang sudah umum dipahami devPola khusus WordPress, kurang familiar di luar ekosistem WP
Dokumentasi OtomatisEndpoint 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:

PHP
// 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:

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:

PHP
// 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:

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:

  1. 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.
  2. Application Passwords
    • Memberi “password khusus” untuk aplikasi (mobile app, CRM, dsb.) yang akan mengakses REST API.
    • Aman dan sudah bawaan WordPress modern.
  3. 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:

  1. 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=2 Ini penting agar server tidak overload saat mengambil banyak data.
  2. Caching response: Response REST API bisa di-cache (object cache, page cache, atau CDN) untuk mengurangi beban server.
  3. Filter data yang benar-benar dibutuhkan: Gunakan parameter query (seperti ?_fields=title,link) untuk mengurangi ukuran JSON sehingga lebih hemat bandwidth.
  4. Optimasi di sisi klien: Gunakan Fetch API atau library HTTP modern, dan hanya panggil endpoint yang benar-benar diperlukan, tidak setiap detik tanpa alasan.

Kapan Menggunakan admin-ajax.php?

Diagram alur request WordPress REST API
Referensi: WP Umbrella

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.php muncul 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.

Leave a Comment