WP REST API Apakah lebih mudah untuk mengganti nama bagian wp-json uri default?

8

WP REST API memaparkan banyak informasi sehingga saya memfilter titik akhir yang tidak perlu diungkapkan.

Saya tidak bisa memfilter semuanya: Lokasi file media yang diperlukan terpapar misalnya.

Sebagai perlindungan ekstra saya ingin membingungkan uri default.

Saya ingin mengubah misalnya: http://example.com/wp-json/wp/v2/menjadi http://example.com/mistified/wp/v2/

Apakah ini agak mudah?

violacase
sumber
Untuk perlindungan? URL akan tetap terlihat di KEPALA Anda yang berarti siapa pun dapat melihatnya di sumber Anda. Dan namespace akan secara otomatis menampilkan semua titik akhir Anda yang tersedia. Lihat v2.wp-api.org/guide/discovery
jgraup
Permintaan non-api akan dialihkan ke url eksternal tempat aplikasi frontend. Jadi saya tidak berpikir itu akan ditampilkan di KEPALA di sana. Saya memfilter semua titik akhir default termasuk /wp/v2. Hanya jenis pos khusus yang terpapar sekarang. Dan tentu saja awalan `wp-json '.
violacase
Apakah Anda pernah menemukan solusi untuk @violacase yang tidak berfungsi ini?
rorymorris89

Jawaban:

8

Harap perhatikan bahwa untuk versi WordPress saat ini, menggunakan json_url_prefixfilter tidak lagi berfungsi.

Di WordPress 4.7 (dan menggunakan REST API dari inti sebagai ganti plugin), inilah yang saya butuhkan untuk mengubah awalan API.

add_filter( 'rest_url_prefix', 'my_theme_api_slug'); 
function my_theme_api_slug( $slug ) { return 'api'; }

Jika ini tidak langsung bekerja, Anda harus menghapus aturan penulisan ulang. Anda dapat menjalankan bagian kode ini sekali untuk melakukannya (jangan biarkan di kode Anda sehingga berjalan setiap kali):

flush_rewrite_rules(true);
rorymorris89
sumber
Selain itu, Anda dapat membuat prosedur dengan menggunakan php untuk menggulung ke titik akhir lama tertentu, periksa untuk melihat apakah itu masih berfungsi, maka itulah saat Anda flush_rewrite_rules(true);tetapi jika respons curl mengatakan bahwa apisekarang sudah berfungsi, Anda tidak perlu lagi menyiram
Abel Melquiades Callejo
0

Anda bisa menggunakan json_url_prefixpengait untuk menghapus 'wp-json'semua rute API. Contoh di bawah ini akan melakukan contoh dalam pertanyaan Anda:

add_filter( 'json_url_prefix', 'my_theme_api_slug'); 
function my_theme_api_slug( $slug ) { 
    return 'mistified';
}
Dan.
sumber
Saya tidak bisa melakukan ini. Mungkin masalah reflushing?
violacase