Wordpress REST Register Field Extend Response Permission Callback
Definisi
Selain endpoint custom, WordPress REST API bisa menambah field ke response yang ada (register_rest_field) dan memodifikasi object type (post, user) tanpa membuat route baru. Setiap field butuh get_callback, update_callback, dan permission_callback.
Kapan dipakai
Pakai saat frontend (React, mobile) butuh data tambahan di response post/user yang belum disertakan bawaan — misal meta, hitungan views, URL gambar turunan. Hindari membuat endpoint baru kalau cuma menambah field.
Cara kerja
Tambah field ke post
register_rest_field('post', 'reading_time', [
'get_callback' => function ($obj) {
$content = get_post_field('post_content', $obj['id']);
return (int) ceil(str_word_count(strip_tags($content)) / 200);
},
'update_callback' => null,
'schema' => ['type' => 'integer'],
]);Permission callback
register_rest_field('post', 'secret_note', [
'get_callback' => fn($o) => get_post_meta($o['id'], 'secret', true),
'permission_callback' => function ($req) {
return current_user_can('edit_posts');
},
]);Struktur alur
Loading diagram...
Catatan implementasi
register_rest_fieldmenyasar object type, bukan route; berlaku di list & single.- Selalu set
permission_callback— sejak WP 5.5 wajib, kalau kosong field tidak muncul. - Untuk update,
update_callbackmenerima(value, obj, req)dan harusupdate_post_metasendiri. - Cache hasil
get_callbackbila mahal (transient) supaya list tidak lambat.
Kesalahan umum
- Lupa permission_callback: field tidak muncul di response.
- Query di get_callback untuk list: N+1; cache atau eager load.
- Meta sensitif tanpa cek: bocor data via REST.
- Mengubah response inti: lebih baik field tambahan daripada override.