Saya mencoba mendapatkan menu navigasi dari respons JSON menggunakan plugin WP REST API v2 .
Tidak ada ekstensi plugin menu navigasi untuk REST API v2 , tetapi hanya untuk V1.
Dari Jenis Tulisan WordPress Post , saya mengetahui bahwa menu navigasi diperlakukan sebagai jenis tulisan.
Dari Rest API Doc , ini adalah cara kami mendapatkan pos tipe:
GET http://demo.wp-api.org/wp-json/wp/v2/types/<type>
Saya mencoba mendapatkannya seperti ini:
URL : http://localhost/wptest/wp-json/wp/v2/types/nav_menu_item
Saya menerima 403 kesalahan.
{"code":"rest_cannot_read_type","message":"Cannot view type.","data":{"status":403}}
server mengerti permintaan saya tetapi menolak untuk memberikan data.
T: Bagaimana saya bisa memperbaikinya?
menus
json
plugin-json-api
wp-api
Murhaf Sousli
sumber
sumber
Jawaban:
Ada ekstensi plugin menu navigasi untuk REST API v2: https://wordpress.org/plugins/wp-api-menus/
sumber
Karena saya tidak suka sendiri ketika jawaban teratas adalah "Instal plugin X", berikut adalah cara saya menyelesaikannya:
Menu saat ini tidak tersedia di WP Rest. Jadi yang perlu Anda lakukan adalah mendaftarkan titik akhir kustom Anda sendiri dan kemudian hanya memanggil rute itu dari aplikasi Anda yang membutuhkannya.
Jadi Anda akan memasukkan sesuatu seperti ini (di functions.php Anda, plugin, di mana saja):
Untuk contoh di atas Anda akan mengakses data dari:
Anda dapat menggunakan metode di atas untuk membuat rute yang Anda inginkan untuk mendapatkan semua jenis data yang tidak tersedia di WP Rest. Juga bagus jika Anda perlu memproses beberapa data sebelum mengirimnya ke aplikasi Anda.
sumber
get_menu()
yang cukup umum.false
Jawaban @Liren bekerja dengan baik. Namun beberapa pemula mungkin tidak dapat menyesuaikan rute. Berikut adalah kode yang berfungsi dengan baik dengan WordPress Rest API v2 dengan modifikasi minimum.
Ganti nama menu Anda hanya dalam fungsi wp_get_nav_menu_items () . Jika nama menu dan siput tidak berfungsi (Return false), gunakan Menu ID (terlihat di Dashboard saat mengedit Menu itu).
URL rute:
Rincian lebih lanjut tercakup dalam Tutorial: WordPress Rest API - Dapatkan Item Menu Navigasi
sumber
Anda perlu menambahkan
'show_in_rest' => true,
saat mendaftar jenis posting.Lihat detailnya di sini http://v2.wp-api.org/extending/custom-content-types/
sumber
register_post_type('nav_menu_item', array('show_in_rest' => true));
Saya tidak berpikir plugin harus digunakan untuk tugas-tugas semacam ini. Juga jawaban hkc sebenarnya tidak terlalu buruk, hanya perlu penjelasan lebih lanjut untuk membuat ini bekerja dengan
nav_menu_item
jenis posting (yang digunakan untuk menu navigasi wp).Jenis posting ini sudah terdaftar dan dengan demikian kita perlu mengubahnya, ini mudah dilakukan dengan menghubungkan ke
register_post_type_args
filter. Filter ini memungkinkan kita untuk mengubah argumen untuk jenis posting tertentu. Kode di bawah ini menunjukkan hal itu untuknav_menu_item
jenis posting.Seperti yang mungkin Anda perhatikan dari kode di atas, kode tersebut sedikit lebih dari sekadar menampilkan jenis posting di REST. Ini juga mengubah controller Posting REST default untuk menampilkan output yang agak mirip di REST seperti yang dijelaskan dalam jawaban Liren . Meskipun di samping itu juga melakukan apa yang semua pengontrol REST jenis posting lakukan dan dengan demikian memberi Anda lebih banyak kontrol dan fungsionalitas. Juga pertimbangkan ini sebagai opsi yang lebih stabil karena tidak akan bertentangan dengan rute REST lainnya dan yang tak kalah pentingnya, ini juga jauh lebih nyaman untuk digunakan.
sumber
Saya setuju dengan jawaban @Lirens, tetapi menu harus dipanggil dengan ID, bukan siput. Juga, garis miring sebelum jalur menu tidak diperlukan. Jadi itu menjadi sesuatu yang lebih seperti ini:
Seperti ini, ini berhasil untuk saya.
sumber