Apakah Wordpress REST API diinstal dan diaktifkan pada instalasi vanilla Wordpress 4.7?


29

Saya baru saja menginstal Wordpress 4.7. Salah satu yang disebutkan dalam pengumuman adalah fitur REST API.

Pemahaman saya adalah:

  • Plugin Wordpress REST API tidak diperlukan lagi, karena seandainya itu telah digabungkan dengan inti di Wordpress 4.7.
  • API REST Wordpress diaktifkan secara default

Namun, saya perhatikan bahwa dalam instalasi vanilla Wordpress 4.7, tidak ada titik akhir yang berfungsi (misalnya http://examples.com/wp-json/wp/v2/posts).

Bagaimana saya bisa tahu jika REST API baru benar-benar diaktifkan? Dapatkah REST API diaktifkan atau dinonaktifkan dengan vanilla Wordpress UI, atau haruskah saya menginstal plugin pihak ketiga untuk melakukannya?


1
Apakah ada tag penemuan di sumber halaman? <link rel='https://api.w.org/' href='https://example.com/wp-json/' />Tampaknya hanya berfungsi di situs saya.
Jarang

@Rarst, jika saya grep -r "<link rel='https://api.w.org/'" .dalam htmldirektori, ia mengembalikan satu hit di file ./wp-includes/rest-api.phpdengan teks ini:echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";
Pep

Tidak dalam kode sumber Anda , dalam sumber HTML suatu halaman dari situs Anda di browser.
Pertama

1
@ Pertama, ya saya mengerti<link href="http://example.com/wp-json/" rel="https://api.w.org/">
Pep

Apa yang Anda dapatkan dari membuka tautan di peramban? Dengan WP_DEBUG diaktifkan?
Pertama

Jawaban:


21

4.7 mengaktifkannya secara default. Cara mudah untuk memeriksa apakah itu berfungsi adalah dengan mengunjungi url example.com/wp-json, dan Anda harus mendapatkan daftar titik akhir yang terdaftar di sana

Tidak ada opsi resmi untuk menonaktifkannya (setidaknya ada pembicaraan tentang itu tidak yakin apakah itu ada dalam rilis), beberapa fungsionalitas inti tergantung padanya.

Hal yang paling jelas untuk diperiksa jika tidak berfungsi adalah aturan htaccess Anda, dan apakah Anda memiliki direktori wp-json


Saya tidak memiliki direktori wp-json di bawah /var/www/htmlatau subdirektori-nya. Sepertinya saya tidak punya .htaccessfile (selain /var/www/html/wp-content/plugins/akismet/.htaccess, haruskah saya punya file ?
Pep

@Pep, server web apa yang Anda gunakan? apakah Anda memiliki permalink cantik?
Mark Kaplun

Apache Saya mengikuti persis langkah-langkah dalam tutorial ini untuk menginstal Wordpress 4.7 di AWS: docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.html dan docs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Pep

tidak terbiasa dengan AWS tetapi jika Anda menginstal vanilla wordpress Anda harus memiliki .htaccess di root instalasi Anda. Jika tidak mencoba untuk pergi ke pengaturan> permalinks, pastikan Anda tidak berada di pengaturan polos, simpan, dan kemudian periksa apakah htaccess dihasilkan
Mark Kaplun

6
Saya akhirnya menemukan masalah. Karena saya tidak tahu bahwa Permalink akan diperlukan untuk REST API untuk bekerja, saya melewatkan selama pengaturan awal langkah untuk mengatur AllowOverride Alldi <Directory "/var/www/html">bagian /etc/httpd/conf/httpd.conf. Karena itulah ia mengabaikan perubahan saya .htaccess. Sekarang dengan permalink selain PLain, titik akhir REST API berfungsi.
Pep

11

4,7 saya juga berpikir bahwa REST API dinonaktifkan, tetapi saya diakali oleh URL. Untuk melihat URL yang benar, cari garis yang terlihat seperti itu:

tautan rel = ' https://api.w.org/' href = ' http://mysite?rest_route=/' />. Jadi, menggunakan http: // mysite? Rest_route = / sebagai awalan menyelesaikan masalah saya. Misalnya untuk memulihkan posting sudah cukup untuk mengetik: http: // mysite? Rest_route = / wp / json

Saya tidak dapat menemukan pada dokumentasi bahwa param permintaan diperlukan. Apakah saya satu-satunya?


Bekerja untuk saya dengan wordpress 4.8.x Tidak yakin mengapa ini tidak didokumentasikan di mana pun.
Anirudha

2
Bukan satu-satunya. Hanya menemukan jawaban ini di komentar Anda setelah pencarian 10 menit. Perlu dilakukan:www.example.com?rest_route=/wp/v2/posts
Eugene K

3
Saya pikir ini terjadi ketika permalink cantik tidak diaktifkan. Dari dokumen ... "Di situs tanpa permalink cantik, rute sebaliknya ditambahkan ke URL sebagai parameter rest_route. Untuk contoh di atas, URL lengkap akan menjadi example.com/?rest_route=/wp/v2/posts / 123 "
Giles Butler


1

Saya melihat Anda telah memperbaiki masalah tetapi meninggalkan solusi saya di sini karena itu bekerja untuk saya juga. Saya memiliki masalah yang sama ketika memperbarui dari beta15 ke api inti di wp 4.7 Ternyata masalah adalah bahwa saya memiliki beberapa plugin yang menggunakan fungsi register_api_field yang sudah tidak digunakan yang saya ubah menjadi register_rest_field sesuai dengan catatan di changelog ini:

BREAKING CHANGE: Ganti nama register_api_field () menjadi register_rest_field ().

Memperkenalkan fungsi register_api_field () untuk compat mundur, yang memanggil _doing_it_wrong (). Namun, register_api_field () tidak akan pernah berkomitmen ke inti WordPress, jadi Anda harus memperbarui panggilan fungsi Anda.


1

Jika REST API tidak berfungsi di luar kotak atau setelah pemasangan baru dan setelah mengetik

mydomain/wp-json/wp/v2/posts 

maka Anda harus cukup mengaktifkan "permalinks" Anda sebagai post_name berada:

WP Dashboard-> Pengaturan-> Permalinks

Atau jika Anda tidak ingin mengaktifkan permalink, Anda cukup mengetik:

mydomain?rest_route=/wp/v2/posts

Sobat, saya berharap WordPress akan memperbarui buku pegangan Istirahat mereka agar lebih ramah pengguna. Saya suka versi lama dokumen :)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.