7 days of WordPress plugins, themes & templates - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. Code
  2. Creative Coding

Menggunakan Backbone Dalam Admin WordPress: Front End

Scroll to top
Read Time: 9 mins

Indonesian (Bahasa Indonesia) translation by Muhamad Zulfiqor (you can also view the original English article)

Selamat datang di bagian kedua Menggunakan Backbone Dalam Admin WordPress. Pada bagian pertama, kami mengatur 'back-end' dari plugin kami dan sekarang di bagian kedua kami akan menyelesaikan dengan menambahkan fungsionalitas 'sisi klien' atau 'ujung depan' kami. Untuk ikhtisar tentang apa yang kami bangun dalam tutorial ini bersama dengan struktur dan file folder kami, silakan tinjau bagian pertama.


1. Buat File Template

Dalam folder src, buat yang lain disebut Template dan file di dalam yang disebut metabox.templ.php. Ini adalah tempat kami akan menempatkan HTML yang diperlukan untuk kotak meta kami. Hal ini juga kesempatan besar untuk output data JSON yang diperlukan untuk jawaban kami.

Folder dan file sekarang harus terlihat seperti ini.

files02

Buat Template untuk Satu Jawaban

Mari kita melihat pada apa yang kita ciptakan. Anda dapat memikirkan jawaban setiap sebagai Model data dan karena kita akan menggunakan sisi klien template untuk menghasilkan pandangan untuk masing-masing, pandangan itu dapat bereaksi terhadap perubahan dalam model. Ini memungkinkan kita untuk menjadi sangat spesifik ketika mengikat peristiwa UI dan secara alami memimpin ke alur kerja mudah - setelah Anda mendapatkan kepala Anda di sekitarnya, yaitu.

model-view

Di dalam metabox.templ.php kami baru dibuat, ini adalah template yang kita akan menggunakan untuk masing-masing dari kita model. Anda dapat melihat bahwa kita pada dasarnya adalah membungkus beberapa HTML dalam script tag. Kami memberikan script tag atribut type = "text/template" sehingga browser tidak membuat itu ke halaman. Ini sepotong kecil HTML adalah untuk digunakan kemudian untuk menghasilkan markup diperlukan untuk melihat masing-masing. Kita akan menggunakan Underscore's built-in template kemampuan sehingga nilai dibungkus seperti ini akan digantikan oleh data dalam model kita nanti.

Dasar HTML

Masih dalam src/templates/metabox.templ.php - di sini kita adalah hanya meletakkan wadah yang akan diisi dengan masukan dari template di atas. Hal ini terjadi setelah tulang punggung telah diurai data JSON yang diperlukan untuk model, jadi untuk sekarang ini adalah semua yang perlu kita lakukan di sini.

Output JSON

Hal terakhir yang diperlukan di dalam src/templates/metabox.templ.php file, adalah data JSON yang mewakili setiap jawaban. Di sini kami menciptakan sebuah objek Global Namespace dan kemudian menetapkan nilai-nilai yang kami kirimkan melalui dengan $viewData array. Saya juga ingin menyimpan referensi ke wadah kami akan menggunakan nanti sehingga saya tidak memiliki ID di dua file terpisah.


2 JavaScript.

OK, jika Anda mendapatkan sejauh ini, Anda harus berhasil set-up plugin Anda mengizinkan penggunaan Backbone.js dan kotak meta Keluaran mark-up diperlukan dan JSON data. Sekarang saatnya untuk membawa itu semua bersama-sama dan menggunakan Backbone.js untuk mengatur kode sisi klien kami. Saatnya untuk menutup:

  1. Menciptakan koleksi model dari JSON data
  2. Menggunakan sisi klien template untuk membangun pandangan untuk masing-masing
  3. Menonton untuk klik, kunci dan blur peristiwa dalam pandangan setiap
  4. Menyimpan model kembali ke database

Membuat File admin.js dan tempat itu ke js Folder

File dan struktur direktori akhir Anda akan terlihat seperti ini.

files03

Pertama-tama kita akan membungkus segala sesuatu yang kita lakukan dalam fungsi segera disebut dan lulus dalam jQuery untuk digunakan dengan tanda $, aku tidak akan menunjukkan pembungkus ini dalam cuplikan lebih apapun, jadi pastikan Anda meletakkan segala sesuatu di bawah di dalamnya.

Selanjutnya kita perlu untuk mengakses data kami yang disimpan pada global namespace dan juga membuat objek baru yang akan menyimpan benda-benda tulang punggung kami.

Model

Model mewakili jawaban tunggal. Dalam konstruktor yang kami melakukan beberapa hal.

  1. Menetapkan nilai default untuk memperbaiki palsu
  2. Menetapkan URL tulang punggung yang membutuhkan untuk menyimpan model kembali ke database. Kita dapat mengakses URL yang benar berkat membuktikan variabel ajaxurl yang tersedia pada setiap halaman admin WordPress. Kami juga menambahkan nama metode kami yang menangani permintaan ajax
  3. Selanjutnya kita akan menimpa toJSON metode untuk menambahkan posting saat ini ID ke setiap model. Ini bisa telah melakukan sisi server, tapi saya sudah taruh di sini sebagai contoh bagaimana Anda dapat mengganti apa yang disimpan ke server (ini bisa datang sangat berguna itulah sebabnya saya telah menyertakan di sini)
  4. Akhirnya di metode inisialisasi, kita akan memeriksa jika model saat ini adalah jawaban yang benar dengan membandingkan dengan ID untuk ID dari jawaban yang benar. Kami melakukan hal ini sehingga kemudian kita tahu jawaban yang harus dipilih secara default

Koleksi

Koleksi pada dasarnya hanya sebuah bungkus untuk sekelompok model dan itu membuat bekerja dengan model-model angin. Contoh kecil ini, kami tidak akan mengubah koleksi, Selain menetapkan yang model itu harus menggunakan.

Wrapper input

Pandangan pertama kami dapat dianggap sebuah bungkus untuk setiap Field input. Kita tidak perlu untuk menyatakan template atau elemen HTML yang kita ingin tulang punggung untuk menciptakan bagi kita dalam hal ini, karena kemudian ketika kita instantiate pandangan ini, kita akan melewati ID dari div bahwa kita diciptakan dalam file kotak meta. Tulang punggung kemudian akan hanya menggunakan elemen sebagai wadah. Pandangan ini akan membawa koleksi dan untuk setiap model dalam koleksi itu, itu akan menciptakan sebuah elemen input yang baru dan menambahkan itu untuk dirinya sendiri.

Masukan tunggal

Pandangan ini berikutnya mewakili model tunggal. Kepentingan pamer jenis-jenis hal-hal yang dapat Anda lakukan ketika coding JavaScript dengan cara ini, saya sudah mencoba untuk memberikan beberapa teknik interaksi yang berbeda dan menunjukkan bagaimana untuk bereaksi terhadap orang-orang dengan tulang punggung.

Perhatikan bahwa kita akan menentukan 'tagName' di sini bersama dengan template. Dalam kasus kami, ini akan ambil template itu kita melihat mengurai sebelumnya, menggunakan data dari model, dan kemudian membungkus semuanya dalam tag p (yang akan memberi kita sedikit bagus margin di sekitar masing-masing).

Juga perhatikan bagaimana peristiwa yang terikat kepada unsur-unsur dalam pandangan. Jauh lebih bersih daripada rata-rata Anda panggil jQuery dan apa yang lebih baik adalah kemampuan untuk menggunakan jQuery pemilih seperti ini this.$('input') dalam pandangan kami mengetahui bahwa mereka secara otomatis scoped jarak. Ini berarti jQuery tidak melihat seluruh DOM ketika mencoba untuk mencocokkan pemilih.

Dalam pandangan ini, kita akan mampu:

  1. Tahu kapan sebuah field input telah berubah
  2. Perbarui model yang terkait dengannya secara otomatis (yang akan digunakan untuk memperbarui bidang pilih secara otomatis di bawahnya)
  3. Aktifkan tombol simpan di sisi input yang diubah
  4. Lakukan penyimpanan kembali ke database

Elemen Pilih

Elemen pilih ini adalah tempat pengguna dapat memilih jawaban yang benar. Ketika pandangan ini di instantiated, ia akan menerima koleksi model yang sama yang dilakukan oleh pembungkus input. Ini akan berguna nantinya karena kita akan dapat mendengarkan perubahan pada model di bidang input dan secara otomatis memperbarui nilai yang sesuai dalam elemen pilih ini.

A Single Option Lihat

Tampilan akhir kami akan membuat elemen opsi untuk setiap model dan akan ditambahkan ke elemen pilih di atas. Kali ini saya telah menunjukkan bagaimana Anda dapat secara dinamis mengatur atribut pada elemen dengan mengembalikan hash dari fungsi panggilan balik yang ditetapkan ke properti atribut. Juga perhatikan bahwa dalam metode inisialisasi () kita memiliki 'berlangganan' untuk mengubah acara pada model (khususnya, atribut jawaban). Ini pada dasarnya hanya berarti: setiap saat atribut jawaban model ini diubah, panggil metode render () (yang dalam hal ini, hanya akan memperbarui teks). Konsep 'berlangganan' atau 'mendengarkan' peristiwa yang terjadi dalam model benar-benar apa yang membuat Backbone.js dan banyak perpustakaan lain menyukainya begitu kuat, berguna dan menyenangkan untuk diajak bekerja sama.

Instantiate Koleksi dan Tampilan

Kami sangat dekat sekarang, yang harus kami lakukan adalah memberi instantiate koleksi baru dan memberikannya JSON yang diperlukannya, kemudian instantiate kedua tampilan 'pembungkus' untuk elemen pilih dan untuk input. Perhatikan bahwa kami juga memberikan properti el ke pandangan kami. Ini adalah referensi ke div dan pilih elemen yang kita kosongkan sebelumnya di kotak meta.


3. Aktifkan Plugin

Jika Anda telah membuat sampai akhir, Anda sekarang harus bekerja sepenuhnya contoh tentang bagaimana untuk menggabungkan Backbone JS ke WordPress plugin. Jika Anda pergi ke depan dan melihat file sumber, Anda akan melihat bahwa jumlah sebenarnya kode yang diperlukan untuk memasukkan tulang punggung relatif kecil. Banyak kode kami pergi di sini adalah PHP yang diperlukan untuk plugin. Bekerja dengan tulang punggung setiap hari selama 6 minggu terakhir telah benar-benar memberi saya baru ditemukan menghormati organisasi kode ujung depan dan saya berharap bahwa Anda dapat menghargai manfaat yang pasti akan datang dari bekerja dengan cara ini.

Dalam masyarakat WordPress saya bisa membayangkan beberapa plugin yang lebih kompleks dan berkualitas tinggi di luar sana benar-benar menguntungkan dari menggunakan tulang punggung dan saya merasa terhormat untuk bisa berbagi dengan Anda sebuah teknik untuk melakukan hal itu.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.