Saya mencoba membuat REST API untuk situs web wordpress saya yang digunakan untuk daftar fasilitas menggunakan plugin wordpress job manager.
Saya telah mendaftarkan pos kustom saya, taksonomi di \ plugins \ rest-api \ plugin.php.
API di bawah ini memberi saya semua listing dengan respons default.
http: // localhost / sports / wp-json / wp / v2 / joblisting /
Saya ingin menambahkan posting meta di respons JSON menggunakan kode di bawah ini.
function slug_register_phone_number() {
register_rest_field( 'job_listing',
'phone',
array(
'get_callback' => 'slug_get_phone_number',
'update_callback' => null,
'schema' => null,
)
);
}
function slug_get_phone_number($post, $field_name, $request) {
return get_post_meta($post->id, '_phone' );
}
}
Dengan menggunakan kode di atas saya dapat menambahkan "telepon" sebagai respons REST tetapi saya selalu menerima telepon = false sebagai respons. Itu tidak menunjukkan data yang benar dari tabel wp_postmeta.
Saya telah mengikuti tautan yang disebutkan di bawah ini untuk referensi.
http://v2.wp-api.org/extending/modifying/
Masukkan detail. 1. WP Job manager 2. rest-api
Bantuan apa pun akan sangat membantu.
sumber
Jawaban:
$post
dalam fungsi callback adalah array, bukan objek. Jadi kamu tidak bisa menggunakan$post->id
. Ubah$post['id']
dan harus berfungsi:Saya merekomendasikan untuk mengubah
_phone
kephone_number
atau sesuatu yang lain tanpa awalan garis bawah. Karena_
sering digunakan dengan kunci meta pribadi. Cobalah untuk menambahkan bidang khusus yang memiliki kunci meta dengan_
awalan langsung ke posting Anda, Anda akan melihat apa yang saya maksud.sumber
WP API memiliki
rest_prepare_post
filter (ataurest_prepare_CPT
jika Anda bekerja dengan posting khusus) yang dapat Anda gunakan untuk mengubah respons JSON. Dalam kasus Anda itu akan terjadirest_prepare_joblisting
.Menggunakan filter yang sama Anda juga dapat menghapus bidang / data dari respons dan melakukan manipulasi data apa pun.
sumber
Tambahkan saja metode ini ke function.php
sumber
Berikut ini adalah contoh OOP:
sumber