Cara Menghapus Rute & Titik Akhir REST API WordPress Default
Diterbitkan: 2018-07-31WordPress REST API diperkenalkan ke inti dalam versi 4.7 (Vaughan) pada bulan Desember 2016. Seperti perubahan signifikan lainnya yang dibuat pada inti WP, itu diperdebatkan dengan sengit (saat ini, Juli 2018, Gutenberg adalah subjek dari perdebatan semacam itu/ kontroversi). Pada akhirnya, tidak ada yang terjadi. Mereka yang tidak peduli dengan REST API tetap tidak peduli. Mereka yang peduli membuat beberapa aplikasi, integrasi, plugin, dan proyek keren lainnya.
Ketika #wordpress REST API digabung menjadi v4.7 core, orang-orang ketakutan! Sama seperti mereka panik ketika ada perubahan terjadi. Pada akhirnya, semuanya berjalan dengan baik.
KLIK UNTUK TWEETDan sementara kita berada di topik proyek keren. Tahukah Anda bahwa yang paling sukses dimulai dengan halaman segera hadir? Dan dalam banyak kasus, ini adalah halaman segera hadir yang dibangun menggunakan plugin Coming Soon & Maintenance Mode.
Plugin ini hadir dengan pembuat drag-and-drop, 170+ tema, pengaturan SEO terbaik di kelasnya, layanan penjawab otomatis dan email, dan banyak fitur lain yang memungkinkan Anda membuat halaman segera hadir yang sempurna dalam hitungan menit. Dan di atas semua ini, plugin terintegrasi dengan Depositphotos yang berarti Anda dapat menemukan visual terbaik langsung dari plugin. Tetapi jika Anda bukan penggemar koleksi yang ditawarkan Depositphotos, Yay Images juga merupakan sumber konten stok yang bagus.
Tapi cukup tentang itu, mari kembali ke topik utama kita, REST API.
Kami peduli dengan REST API dan menggunakannya saat membangun SaaSes yang didukung WP. Ini stabil, cepat, mudah digunakan, cocok dengan WP dan dalam banyak kasus didokumentasikan dengan baik. Jika Anda tidak tahu apa itu REST API, ini mungkin bukan postingan untuk Anda, tetapi lihat apa itu REST API (video dan teks) dan mungkin Anda akan menggunakannya di proyek berikutnya.
Rute? Titik akhir? Bukankah semuanya sama?
Tidak, itu tidak sama. Perbedaannya tidak kentara bagi kebanyakan orang, dan mereka menggunakan istilah route dan endpoint secara bergantian, tetapi tidak terlalu rumit. Rutenya kurang lebih adalah URL. Ini adalah "nama" yang digunakan untuk mengakses titik akhir. Pada satu rute, Anda dapat memiliki beberapa titik akhir karena titik akhir yang Anda gunakan bergantung pada jenis permintaan HTTP yang Anda gunakan. GET
, POST
, PUT
atau DELETE
bisa, dan biasanya melayani tujuan yang berbeda. Mengakses yoursite.com/wp-json/v2/posts/1 melalui GET
akan memberi Anda detail untuk posting dengan ID #1. Menggunakan DELETE
pada rute yang sama akan memanggil titik akhir yang berbeda (atau fungsi jika Anda mau) yang menghapus posting itu. Buku pegangan REST API resmi memiliki info lebih lanjut tentang hal ini, jadi selami detailnya.
#wordpress REST API rute dan titik akhir bukanlah hal yang sama! Rute adalah "nama" yang digunakan untuk mengakses titik akhir. Sebuah rute tunggal biasanya dikaitkan dengan beberapa titik akhir.
KLIK UNTUK TWEETMengapa saya menghapus titik akhir atau rute WP REST API default?
Seperti yang telah kita bahas di artikel tentang menghapus aturan penulisan ulang default – ada seratus alasan mengapa pengembang WordPress melakukan ini.
“Ini akan membuat WordPress lebih cepat karena tidak harus mengurai semua titik akhir itu.” masih sesuatu yang saya tidak setuju dan percaya keuntungannya akan kurang dari satu milidetik tetapi tidak ada salahnya.
Anda ingin menjaga semuanya tetap bersih dan karena Anda tidak menggunakan REST API – mengapa memiliki rute API? Tentu, masuk akal. Tetapi dalam hal ini, gunakan plugin untuk menonaktifkan REST API sepenuhnya.
Dan kemudian ada alasan kami menonaktifkan rute default (dan titik akhir). Kami banyak menggunakan titik akhir REST API khusus tetapi tidak membutuhkan yang default. Oleh karena itu, bagus untuk menjaga semuanya tetap ramping dan bersih. Hal ini juga tidak mengganggu keamanan karena kami mengekspos lebih sedikit data ke dunia luar yang keras.
Tunjukkan titik akhir API default
Referensi titik akhir tersedia di buku pegangan REST API. Kurang lebih setiap bagian data yang tersedia untuk umum akan tersedia melalui REST API juga. Contoh permintaan ke demo.wp-api.org/wp-json/wp/v2/posts akan menampilkan sepuluh posting dalam format JSON. Jika Anda menginginkan versi respons yang dapat dibaca manusia, Anda harus mendekode respons JSON. Hal yang sama berlaku untuk halaman, kategori, dan struktur data lainnya. Struktur data dan titik akhir sangat mirip seperti yang Anda lihat jika Anda menelusuri referensi.
Cara lain untuk melihat rute default adalah dengan menambahkan kode ini ke file functions.php
tema Anda dan kemudian buka yoursite.com/wp-json/. Aktifkan tautan cantik jika Anda belum melakukannya.
add_filter( 'rest_endpoints', 'show_default_endpoints' ); function show_default_endpoints( $endpoints ) { var_export( array_keys( $endpoints ) ); die; }
Ini menunjukkan 31 titik akhir REST default. Jumlahnya, tentu saja, rentan terhadap perubahan ketika fungsionalitas inti baru ditambahkan. Dan itu akan berbeda jika Anda memiliki plugin yang menambahkan titik akhir khusus.
Menghapus titik akhir default
Kode di atas membutuhkan sedikit perubahan. Kembalikan array kosong, dan semua titik akhir hilang.
add_filter( 'rest_endpoints', 'remove_default_endpoints' ); function remove_default_endpoints( $endpoints ) { return array( ); }
“Semua titik akhir” mencakup titik akhir khusus Anda juga, jadi sebaiknya jangan menghapusnya. Berikut cara mudah untuk membuatnya tetap aktif:
add_filter( 'rest_endpoints', 'remove_default_endpoints_smarter' ); function remove_default_endpoints_smarter( $endpoints ) { $prefix = 'your_custom_endpoint_prefix'; foreach ( $endpoints as $endpoint => $details ) { if ( !fnmatch( '/' . $prefix . '/*', $endpoint, FNM_CASEFOLD ) ) { unset( $endpoints[$endpoint] ); } } return $endpoints; }
Lewati saja titik akhir dengan awalan khusus Anda dan simpan dalam array. Jangan lupa untuk mengembalikan array.
Menyesuaikan awalan URL REST
Titik akhir kustom, meskipun kustom menggunakan awalan yang sama dengan titik akhir default. Mereka terlihat seperti mysite.com/wp-json/custom-endpoint/. Mungkin Anda menganggapnya jelek atau tidak suka barang bawaan. Mengubahnya adalah masalah satu baris kode. Untuk tujuan pengujian, tempatkan kode di bawah ini di functions.php
tema dan setelah menyimpan Dasbor terbuka – Pengaturan – Tautan permanen untuk menghapus aturan penulisan ulang.
add_filter( 'rest_url_prefix', 'rest_url_prefix' ); function rest_url_prefix( ) { return 'api'; }
Dengan filter di atas titik akhir Anda akan menjadi mysite.com/api/custom-endpoint/ dan membuka mysite.com/wp-json/custom-endpoint/ URL lama akan menghasilkan kesalahan 404.
Pastikan Anda menyertakan nomor versi di titik akhir kustom Anda karena awalan tidak ditambahkan secara otomatis oleh WP. Awalan nomor versi memastikan perubahan di masa mendatang tidak merusak klien yang menggunakan titik akhir lama. Cukup sertakan awalan versi saat memanggil register_rest_route()
untuk mendapatkan sesuatu seperti mysite.com/api/v1/custom-endpoint/ dan simpan semua titik akhir Anda di belakang "v1" itu sehingga Anda dapat memiliki "v2" dll nanti.
Uji perubahan Anda
Menghapus atau memodifikasi rute dan titik akhir REST API tidak akan membuat perbedaan apa pun di 98% situs WP. "Mengapa?" – Karena mereka tidak menggunakan REST API sama sekali. Tetapi jika milik Anda, pastikan Anda menguji aplikasi yang terhubung karena, seperti semua hal, perubahan dapat merusak banyak hal. Dan lebih baik menemukan bug hari ini daripada besok.