REST API: Add New Custom Field
Tujuan
Menambahkan property/field baru ke JSON data yang dikembalikan oleh WordPress REST API default.
Contoh Kasus: Menambahkan authorName
Default REST API hanya memberi author berupa ID numerik. Kita ingin menambahkan nama author yang bisa dibaca manusia.
Langkah: register_rest_field() di functions.php
php
// functions.php — di bagian atas
add_action('rest_api_init', 'university_custom_rest');
function university_custom_rest() {
register_rest_field('post', 'authorName', array(
'get_callback' => function() {
return get_the_author();
}
));
}Penjelasan 3 Parameter register_rest_field():
'post'— post type yang ingin dikustomisasi (bisa'page','professor', dll.)'authorName'— nama field/property baru yang akan muncul di JSONarray('get_callback' => function)— function yang mengembalikan nilai field
Hasil di JSON:
json
{
"id": 65,
"title": { "rendered": "Biology is Cool" },
"authorName": "Brad",
...
}Bisa Tambah Banyak Field
php
function university_custom_rest() {
register_rest_field('post', 'authorName', array(
'get_callback' => function() { return get_the_author(); }
));
// Tambah field lain jika perlu:
register_rest_field('post', 'perfectlyCroppedImageUrl', array(
'get_callback' => function() {
return get_the_post_thumbnail_url(0, 'professorLandscape');
}
));
}Apapun yang bisa di-achieve dengan PHP (ACF values, cropped images, custom queries) bisa dikembalikan sebagai value di REST API.
Menggunakan di JavaScript (Search.js)
js
// Di dalam .map() loop:
${combinedResults.map(item => `
<li>
<a href="${item.link}">${item.title.rendered}</a>
${item.type == 'post' ? ` by ${item.authorName}` : ''}
</li>
`).join('')}Ternary untuk Post Type Check:
item.type == 'post'→ tampilkan "by authorName"- Selain post (misalnya page) → tampilkan string kosong
- Property
typesudah ada di default REST API JSON