Saya memiliki jenis posting khusus yang ingin saya akses melalui jQuery - lebih disukai menggunakan JSON.
Jadi hal pertama yang pertama. membuat fungsi yang mengembalikan / gema json cukup mudah, tetapi bagaimana saya mengaksesnya melalui jquery.
seperti yang ditulis Mike dalam pertanyaan ini , dia - sejauh yang saya mengerti - menempatkannya di root wordpress. yang membuatnya dapat diakses menggunakan nama file php - tetapi Apakah ini direkomendasikan? Saya lebih suka memasukkannya ke dalam folder plugin.
Saya sudah mencoba membaca codex wordpress, tetapi cara panggilan ajax ditangani hanya membingungkan saya, karena Anda memposting setiap panggilan ajax ke admin-ajax.php, meskipun itu bukan halaman admin?
Bisakah seseorang meluruskan masalah yang saya alami?
/Badai
sunting
Masalah yang saya miliki adalah memahami bagaimana panggilan ajax harus dilakukan di wordpress, serta di mana menempatkan kode php dan js Anda untuk melakukan / menangani panggilan.
Di pertanyaan lain yang saya tautkan, Anda membuat fungsi menempatkan file di root wp - Saya tidak ingin melakukan itu. Tapi sekarang saya telah belajar cara menggunakan wp_ajax_ (nopriv _) [action] dan secara efektif dapat mengakses json yang saya buat. Masalah yang tersisa adalah Di mana saya harus menempatkan JS untuk melakukan panggilan. Saya ingin meletakkannya di file plugs js, tetapi karena ini akan disajikan di halaman, bukan di situs admin, ajaxurl tidak didefinisikan, jadi saya harus mengulang menggunakan php.
echo admin_url('admin-ajax.php');
Jadi pertanyaannya adalah bagaimana saya harus menggabungkan php ini dengan javascript, dan bagaimana seharusnya saya kemudian membuatnya, mengingat itu bukan file atau skrip.
Jawaban:
Ajax Handler
Memang agak membingungkan bahwa handler Ajax ada di
wp-admin/
direktori, tapi ya, Anda bisa dan harus menggunakannya untuk permintaan non-admin juga. Anda kemudian mendaftarkan pawang untukwp_ajax_nopriv_[action]
kait, bukan yang normalwp_ajax_[action]
. Dalam hal ini Anda hanya perlu mengikuti baris pertamaadmin-ajax.php
, karena permintaan yang dilakukan oleh pengguna yang tidak masuk akan meninggalkan halaman sekitar baris 50.Jadi daftarkan fungsi untuk hook
wp_ajax_nopriv_get_custom_post_data
, dan itu akan dipanggil jika Anda memintaadmin-ajax.php
denganaction
parameter yang diatur keget_custom_post_data
. Pastikan untuk menelepon sendiridie()
di akhir handler Anda, jika tidak maka defaultdie(-1)
akan dikembalikan. Dan juga daftarkan versi login-nya,wp_ajax_get_custom_post_data
(ke fungsi handler yang sama, tidak ada masalah), karena jika Anda masuk ke situs Anda, Anda tidak akan menemuinopriv
kesulitan.Konfigurasi sisi server ke Javascript
Trik untuk mengirim data konfigurasi sisi server (seperti
admin-ajax.php
url), adalahwp_localize_script()
. Anda memberikannya array kunci dan nilai yang akan dimasukkan di bagian atas halaman. Ini mungkin awalnya dibuat hanya untuk string yang dapat dilokalisasi, tetapi Anda dapat menggunakannya untuk melewatkan data konfigurasi juga.storm_json_config
adalah nama pegangan (jika Anda ingin membagikannya nanti),storm_config
adalah nama objek Javascript yang akan berisi data Anda. Jadi file Javascript statis Anda dapat berisi baris sepertijQuery.post(storm_config.ajaxurl, ...)
.Lihat juga jawaban bueltge untuk pertanyaan serupa .
Javascript statis dari dir plugin
Untuk memuat file Javascript statis dari dir plugin Anda sendiri, Anda gunakan
wp_enqueue_script()
. Itu akan terlihat seperti ini:Di mana
storm_json
lagi nama pegangan, maka Anda memberikan tautan ke file, lalu dependensi (bisanull
), dan kemudian nomor versi yang akan ditambahkan setelah permintaan untuk mengalahkan cache browser pada pembaruan.sumber
wp_localize_script()
, yang dapat Anda gunakan untuk mengirim data konfigurasi dari sisi server ke browser. (Kiat kecil: Jika Anda menambahkan@
nama pengguna, orang itu akan mendapat pemberitahuan tentang balasan Anda. Jadi,@Mike: I updated the title
pastikan dia melihat komentar Anda)