Menurut posting ini tidak ada API JavaScript bawaan untuk Wordpress. Oleh karena itu pengembang yang ingin membangun AJAX tampaknya datang dengan solusi mereka sendiri yang sepertinya tidak tepat bagi saya.
Apa yang benar-benar saya lewatkan selain dari mengambil posting atau data apa pun dengan API bawaan adalah serangkaian kecil fungsi JavaScript untuk menangani antarmuka back-end dan front-end. Sekarang, adakah yang direncanakan tentang masalah ini?
Misalnya, saya ingin tahu itu
- menu utama kiri diciutkan,
- pengguna apa yang masuk
- kelompok mana dia,
- bahkan data klien seperti browser
Dan seterusnya.
ajax
javascript
wp-enqueue-script
api
wp-localize-script
stackoverclan
sumber
sumber
Jawaban:
TL; DR
Tidak ada JavaScript API di inti WordPress dan tidak ada yang direncanakan, tetapi sebenarnya, tidak perlu.
Backend
Pertama-tama katakanlah, mengenai backend, beberapa informasi yang berguna dapat diambil dari variabel global JavaScript yang sudah ada (WordPress menyukai semua rasa global).
Misalnya
ajaxurl
agaradmin-ajax.php
url digunakan dalam panggilan ajaxpagenow
untuk siput halaman admin saat ini, misalnya 'dasbor'adminpage
untuk file halaman admin saat ini, misalnya 'index-php' (titik diganti dengan hiphens)typenow
untuk jenis posting saat ini saat dalamedit.php
,post.php
ataupost-new.php
userSettings
dapat digunakan untuk mendapatkan informasi oc pengguna saat ini loginInformasi itu memberi Anda beberapa "konteks" dari status aplikasi saat Anda berada di backend.
Untuk hal-hal lain yang disebutkan dalam pertanyaan, Anda tidak memerlukan "API", karena fungsi jQuery super-sederhana dapat melakukan triknya. Untuk misalnya mengetahui apakah menu admin ditutup, Anda dapat memeriksa kelas "terlipat" di badan:
Kekurangan Dokumentasi
Untuk hal-hal seperti cuplikan sebelumnya, tidak perlu membuat fungsi. WP sudah memiliki terlalu banyak fungsi di PHP. Saya sangat berharap bahwa fungsi tambahan seperti itu tidak akan ditambahkan ke inti.
Apa yang benar-benar dibutuhkan oleh JavaScript di WordPress adalah dokumentasi untuk fitur yang ada: tidak ada hal yang saya tulis di atas yang didokumentasikan dalam dokumen resmi apa pun seperti Codex atau dalam file sumber.
Paling depan?
Sampai di sini saya hanya berbicara tentang backend.
Ini karena hampir semua hal yang terjadi di frontend terkait dengan tema yang sedang digunakan. Mari kita bayangkan ada file JavaScript yang disediakan oleh WordPress yang berisi fungsi untuk mendapatkan informasi tentang kondisi aplikasi saat ini; jika suatu tema tidak membuat enqueue file JS itu, fungsi-fungsi itu tidak tersedia dan untuk memaksa suatu tema untuk enqueue skrip seperti itu akan benar-benar salah.
Tidak perlu API (lain)
Namun, di WordPress, setiap informasi yang Anda dapatkan melalui PHP dapat dengan mudah digunakan dalam JavaScript juga dan tanpa permintaan AJAX. Fungsi yang memungkinkan ini adalah
wp_localize_script()
.Anggap Anda ingin mendapatkan pengguna saat ini dan data pengguna seperti peran pengguna di JavaScript Anda dan Anda juga ingin mengetahui variabel kueri yang digunakan di halaman saat ini, Anda dapat melakukan hal berikut:
Melakukannya dalam skrip Anda,
MyScriptData.user
variabel akan menjadi objek JavaScript dengan semua informasi pengguna semua variabel kueri.Ini berlaku untuk skrip backend dan frontend (dengan kata lain: untuk kedua "sisi"). Tidak perlu untuk API JavaScript tambahan hanya untuk mengambil informasi itu. PHP sudah cukup jika Anda menggunakan cara yang tepat untuk meneruskan informasi dari PHP ke JS.
Backbone.js
Backbone.js , adalah kerangka kerja JavaScript yang memungkinkan (semacam) pola pengembangan MVC dengan JavaScript. Itu termasuk dalam inti dengan WP 3.5 - terutama untuk menangani galeri media.
Pustaka ini bukan WordPress JavaScript API, karena tentu saja memungkinkan pengembangan JavaScript yang lebih kuat, tetapi tidak ada fungsi khusus WordPress yang ditambahkan ke pustaka itu dan ini adalah satu-satunya penggunaan inti saat ini dari Backbone.js. Pustaka media kurang lebih tidak terdokumentasi dan tidak memiliki API publik. Dan AFAIK tidak direncanakan untuk mengisi celah itu. (Lebih dari senang untuk mengubah / menghapus pernyataan itu - jika seseorang dapat membuktikan saya salah).
WP-API
Seperti yang ditunjukkan oleh Rarst dan Brian Fegter , WP API akan menjadi bagian dari inti (mungkin dimulai dengan WP 4.1).
Tetapi saya harus mengatakan bahwa itu bukan API JavaScript. Itu hanya memungkinkan untuk menghubungkan permintaan HTTP ke titik akhir aplikasi yang dikendalikan oleh WP-API. Dan API mengambil data dari database dan mengembalikannya JSON diformat di sana. Contoh dari dokumen:
Karena permintaan HTTP dan respons JSON terkait dapat ditangani dengan bahasa apa pun yang mendukung permintaan HTTP dan format data JSON (di antaranya PHP, Ruby, Python, ASP, dll.), Tujuan utama API WP adalah memungkinkan untuk mendapatkan dan mengatur data WordPress. dari aplikasi non-WP. Itu artinya dari dalam aplikasi apa pun , tidak hanya WordPress.
Tentu, karena JavaScript adalah bahasa yang dapat menangani permintaan HTTP dan format JSON, Anda dapat menggunakan WP-API dari dalam JavaScript JavaScript juga. Seseorang juga bekerja pada klien WP js untuk API itu, tetapi
menggunakan
wp_enqueue_script()
+ fungsi Ajax API + WordPress PHP dimungkinkan untuk mengambil semua informasi yang Anda butuhkan tanpa API tambahan. Dan karena ketiga "bahan" tersebut adalah standar yang ditetapkan WP, menggunakannya bukan merupakan "solusi sendiri". Itu hanya menggunakan solusi standar untuk melakukan tugas kustom (dan umum), yang merupakan inti dari pengembangan plugin ini.bahkan dimungkinkan untuk menggunakan JavaScript untuk menggunakan WP API. Hanya karena WP-API mengembalikan JSON, itu tidak menjadikannya API JavaScript. Tidak ada fungsi JavaScript yang terlibat (permintaan HTTP dikirim dan repositori JSON dikembalikan. Hampir sama dengan apa yang terjadi dengan menggunakan AJAX API). Kalau tidak, layanan apa pun yang mengembalikan JSON harus dianggap sebagai WordPress JS API. WP-API harus dianggap sebagai API layanan eksternal yang mengembalikan JSON, dan mungkin situs yang menggunakan layanan JSON ini sama dengan yang menyediakannya.
tidak ada satu hal pun yang dapat dilakukan dengan WP API yang tidak dapat juga dilakukan dengan menggunakan API AJAX. Tetapi ada banyak hal yang dapat dilakukan dengan API AJAX. tetapi tidak dengan WP-API.
Catatan tentang WP-API + Backbone.js
Dengan Backbone.js, dimungkinkan untuk mendapatkan dan menyimpan informasi dalam aplikasi yang mendukung permintaan HTTP tenang .
Masalahnya adalah bahwa WordPress, baik dalam permintaan "biasa" dan dalam permintaan AJAX, semuanya TETAP: Hanya mendukung
$_GET
dan$_POST
permintaan per default, dan menggunakan satu atau yang lain dengan URl yang sama berakhir di ... hasil yang sama .Sebaliknya, API WP RESTful, jadi aplikasi berbasis Backbone dapat memanfaatkannya untuk aplikasi JavaScript yang kuat, tetapi saya akan tinggal jauh dari mendefinisikan Backbone atau WP API atau Backbone + WP API sebagai API JavaScript untuk WordPress untuk hal-hal yang dikatakan atas.
sumber
SHORTINIT
Anda dapat membuat ajax jauh lebih cepat. Lakukan hal yang sama dengan WP API akan jauh lebih sulit. Btp, apakah Anda benar - benar aplikasi tajam? Kiat: jangan gunakan WordPress.Ada sedikit perkembangan di sekitar JSON REST API yang seharusnya digabungkan ke dalam rilis 4.1 . Saya percaya ini secara resmi akan disebut 'WP API'. Anda dapat mulai menggunakan basis kode sekarang dan terus mengikuti perkembangan terbaru di sini sampai mencapai inti. Ryan McCue dan tim telah menyempurnakan beberapa dokumentasi yang cukup bagus di sini .
sumber
Sementara WP historis telah sentris back-end, ada deklarasi yang dibuat selama bertahun-tahun tentang pindah ke penggunaan JS berat. Dengan mengingat komitmen kompatibilitas ke belakang, patut dipertanyakan bahwa JS akan mencapai paritas atau mengambil alih PHP dalam waktu dekat (menurut saya), tetapi ada beberapa kemajuan di dalamnya.
Admin WordPress sekarang dilengkapi dengan Backbone dan Underscore, yang telah menjadi bagian besar dari iterasi perpustakaan media terbaru. Sayangnya, spesifikasi implementasi tidak terdokumentasi secara kritis dan penggunaan pihak ketiga relatif tidak populer.
Plugin REST API sedang dikembangkan sebagai "plugin fitur" dengan maksud resmi untuk dimasukkan dalam inti WordPress di masa mendatang.
sumber
Untuk menjawab pernyataan Anda:
Tidak ada "solusi sendiri" yang harus dilakukan. Anda dapat meringankan hal-hal dengan menggunakan ATP dengan
ajax_template_part()
oleh @GM atau plugin yang sama dan mengambil jalan pintas, tapi masih ada cara non-standar untuk pergi dengan AJAX di WordPress. Itu "solusi sendiri" / cara (kebanyakan) melakukannya dengan salah . Panggilan AJAX (kira-kira) dilakukan seperti ini:$.ajax()
dan fungsi serupa untuk bereaksi pada interaksi pengguna. Bekerja dengan objek JS global (terlokalisasi) untuk meneruskan data kembali ke panggilan balik PHP.wp_send_json_success()
dan fungsi serupa.Jika plugin atau tema tidak melakukannya dengan cara itu, maka penulis tidak membaca semuanya atau tidak melihat contoh. Ada adalah kerangka untuk itu yang harus digunakan.
Info lebih lanjut dan terperinci tentang cara menangani AJAX di WP dapat ditemukan di buku komunitas "WordPressTheRightWay" .
WordPress tidak spesifik dalam apa yang perlu Anda lakukan dengan AJAX. Itu sebabnya Anda bisa memasukkan semuanya ke dalam array lokal / global dan membuatnya tersedia untuk panggilan AJAX Anda. Dan itu sejalan dengan cara kerja Backbone: Anda harus melakukan hal-hal yang Anda inginkan .
Jika Anda ingin menggunakan beberapa kerangka kerja MVC JavaScript yang disarankan seperti AngularJs, maka Anda berada di tempat yang salah. Ada CMS lain seperti OctoberCMS, Drupal8, dll yang jauh lebih baik dalam menyediakan basis untuk itu. WordPress akan meminta Anda untuk membangun set kustom Titik Akhir Menulis Ulang di mana Anda dapat mengembalikan dataset untuk Pengontrol JS Anda.
sumber