Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Plugins
Code

Mengintegrasikan beberapa pilihan kuis di WordPress: menciptakan Front End

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Integrating Multiple Choice Quizzes in WordPress.
Integrating Multiple Choice Quizzes in WordPress - Creating the Backend

Indonesian (Bahasa Indonesia) translation by Sandi Muamar (you can also view the original English article)

Ini adalah bagian kedua dari seri mengembangkan beberapa pilihan kuis plugin untuk WordPress. Pada bagian pertama kami membuat backend kami plugin untuk menangkap data yang diperlukan untuk menyimpan dalam database.

Dalam bagian akhir ini, kita akan menciptakan frontend plugin dimana pengguna dapat mengambil kuis dan mengevaluasi pengetahuan mereka.

Topik-topik berikut akan dibahas dalam bagian ini menyelesaikan plugin kami:

  • Membuat Shortcode untuk menampilkan sebuah kuis
  • Mengintegrasikan jQuery Slider untuk menampilkan pertanyaan dan navigasi
  • Menyelesaikan sebuah kuis dan generate hasil
  • Membuat sebuah kuis Timer

Kita akan membutuhkan sejumlah besar pertanyaan di backend untuk menghasilkan random kuis. Saya berharap bahwa Anda sudah menyedikan backend dan menyimpan pertanyaan kuis yang cukup.

Jadi mari kita mulai.


Membuat Shortcode untuk menampilkan sebuah kuis

Pertama kita harus memiliki sebuah post atau halaman yang memuat unsur-unsur tampilan kuis. Ini dapat dicapai dengan menggunakan shortcode atau halaman template. Dalam plugin ini, shortcode akan digunakan untuk membuat independen dari tema.

Shortcode memungkinkan kita untuk menggunakan plugin sebagai komponen independen sementara halaman template tergantung pada tema. Di sisi lain, halaman template jauh lebih aman daripada shortcode seperti ada kemungkinan untuk menghapus shortcode di dalam halaman oleh kesalahan.

Pada awalnya, shortcode harus menampilkan kategori kuis yang tersedia sehingga pengguna dapat memilih kategori untuk menghasilkan kuis. Shortcode akan ditambahkan pada constructor menggunakan fungsi add_shortcode seperti yang diberikan dalam kode berikut.

Sekarang, mari kita lihat implementasi untuk shortcode mengambil kuisategori yang tersedia dari database.

Shortcode kami akan menghasilkan form HTML dan diperlukan kontrol yang digunakan untuk kuis. Kita mengambil daftar kategori tersedia kuis menjadi bidang drop down untuk membiarkan pengguna memilih kategori. Kita dapat menggunakan fungsi get_terms dengan hide_empty = 1 untuk mendapatkan kategori kuis yang memiliki setidaknya satu pertanyaan.

Bidang tersembunyi disebut wpq_action digunakan untuk memeriksa nilai $_POST setelah di submit.

Setelah Anda memasukkan shortcode ke halaman atau post, output akan terlihat seperti berikut.

Screenshot-204

Sekarang pengguna dapat memilih kategori kuis dan submit form untuk mendapatkan kuis. Jadi kita akan menangani pada form di dalam shorcode untuk mendapatkan kategori yang dipilih dan mengambil pertanyaan random untuk kuis.

Kode berikut berisi implementasi mengambil pertanyaan dari kategori yang dipilih.

Kode yang diberikan harus dimasukkan ke dalam implementasi pengiriman Form bagian kode sebelumnya.

 Setelah formulir disubmit, kami memeriksa apakah form mengandung action yang dibutuhkan menggunakan bidang tersembunyi yang dihasilkan sebelumnya. Maka kita mendapatkan kategori ykamiangdipilih kuis dari $_POST array.

Kemudian kita query database untuk wptuts_quiz post dengan kuis kategori yang dipilih.

Hal ini penting untuk mengatur orderby sebagai rand untuk menghasilka pertanyaan kuis acak, yang jika tidak akan menghasilkan serangkaian pertanyaan yang sama setiap kali. Juga, pastikan untuk mengatur posts_per_page untuk menetapkan jumlah maksimum pertanyaan per setiap kuis yang diberikan.

Setelah hasil dihasilkan kita perlu menambahkan pertanyaan ke elemen HTML yang diperlukan dan kami akan mengimplementasikan hal ini pada bagian berikutnya.


Mengintegrasikan jQuery Slider untuk menampilkan pertanyaan dan navigasi

Kuis dapat dihasilkan sebagai layar yang berisi semua pertanyaan sekaligus, atau layar yang berisi satu pertanyaan pada satu waktu dengan kontrol navigasi. Saya percaya bahwa teknik kedua adalah favorit di kalangan kebanyakan orang. Oleh karena itu, kami akan menampilkan kuis ini dengan satu pertanyaan dan navigasi untuk melintasi pertanyaan-pertanyaan sebelumnya dan berikutnya.

Menghasilkan fungsi ini dari awal bisa menjadi tugas yang memakan waktu serta menciptakan kembali kemudi. JQuery slider akan menjadi solusi sempurna untuk situasi ini dan saya akan menggunakan RhinoSlider, karena ini adalah favorit saya, jadi ambil salinannya.

Di dalam folder download, Anda akan melihat tiga folder bernama img, js dan css. Salin img dan css folder ke plugin dan salin file di dalam js folder ke folder js yang sudah ada yang kita miliki di plugin kuis. Sekarang kita dapat mulai termasuk diperlukan skrip dan style untuk slider.

Termasuk script Frontend

Di bagian pertama, kami membuat script yang diperlukan untuk backend. Dalam bagian ini kita akan meliputi script yang diperlukan untuk RhinoSlider serta quiz.js untuk fungsionalitas kustom.

Untuk aplikasi yang lebih besar, kita dapat menggunakan file terpisah script untuk frontend dan backend. Aku akan menggunakan satu file script untuk membuat hal-hal sederhana.

Pertimbangkan kode berikut untuk termasuk script dan data konfigurasi yang diperlukan.

Di sini kita memiliki tiga file JavaScript yang digunakan untuk RhinoSlider dan quiz.js file untuk fungsionalitas kustom. Dalam bagian sebelumnya, kita mengkonfigurasi durasi kuis. Kita dapat mengambil durasi menggunakan fungsi get_option dan menetapkannya ke $config array. Juga, kita harus mencakup konfigurasi umum dalam array konfigurasi.

Akhirnya kita dapat menggunakan fungsi wp_localize_script untuk menetapkan konfigurasi data dalam quiz.js file.

Termasuk Frontend style

Demikian pula kita dapat memasukkan file CSS yang dibutuhkan untuk Rhino Slider menggunakan kode berikut.

Akhirnya kita perlu memperbarui konstruktor plugin untuk menambahkan action yang diperlukan untuk termasuk skrip dan style seperti yang diberikan dalam kode berikut.

Semuanya sudah siap untuk mengintegrasikan slider dengan pertanyaan-pertanyaan ke shortcode yang kita buat sebelumnya. Mari kita bergerak maju.

Embedding Slider ke Shortcode

Saat ini kami memiliki dua komentar dalam fungsi shortcode, menyebutkan "Menghasilkan HTML untuk pertanyaan" dan "Embedding Slider". Bagian-bagian perlu diperbarui dengan masing-masing kode untuk menghasilkan slider. Pertama kita perlu untuk memperbarui while loop sebagai berikut.

Penjelasan Kode

  • Dalam loop, pertama kita mendapatkan pertanyaan dengan menggabungkan bidang judul dan konten untuk pertanyaan.
  • Kemudian kita mengambil jawaban dari setiap pertanyaan dengan menggunakan fungsi get_post_meta.
  • Di dalam setiap foreach, semua jawaban akan ditugaskan untuk tombol radio dengan nilai-nilai yang diperlukan.
  • Perlu daftar item akan ditempatkan di dalam loop termasuk data atribut HTML, yang akan berguna di bagian berikutnya.
  • Keluaran terakhir while loop akan sebuah variabel string yang berisi daftar pertanyaan dan jawaban mereka tertanam dalam HTML.

Selanjutnya kita perlu membuat wadah untuk slider di bagian berkomentar sebagai "Embedding Slider". Kode berikut berisi kode HTML untuk membuat wadah.

Kita akan menggunakan daftar unordered dipanggil slider sebagai wadah untuk Rhino Slider. Awalnya kami meliputi serangkaian pertanyaan dan jawaban yang dihasilkan di dalam loop, menggunakan $questions_str. Ini akan berisi koleksi item daftar.

Kemudian kita harus secara manual membuat item daftar lain untuk menunjukkan hasil kuis dan Skor.

Sekarang semua data dan slide yang diperlukan untuk aplikasi kuis dikonfigurasi. Kita dapat menginisialisasi Slider badak di quiz.js untuk melihat kuis dalam action.

Saya telah menggunakan beberapa style CSS kustom untuk meningkatkan tampilan dan nuansa. Anda dapat menemukan semua diubah CSS di bawah bagian wp_quiz rhinoslider-1.05.css file. Sekarang Anda harus memiliki sesuatu seperti gambar berikut.

Screenshot-206

Menyelesaikan kuis dan menghasilkan hasil

Setelah kuis dimuat, Anda dapat menggunakan kontrol navigasi untuk bergerak di antara pertanyaan-pertanyaan dan jawaban. Anda harus mengklik tombol "Get Results" setelah semua pertanyaan akan dijawab. Sekarang kita perlu menciptakan hasil kuis menggunakan request AJAX.

Mari kita menerapkan kode jQuery untuk membuat request AJAX.

Setelah mengklik tombol "Get Results", kita memanggil fungsi wpq_quiz_results menggunakan jQuery. Setiap pertanyaan telah ditambahkan ke slider dengan class CSS khusus yang dipanggil ques_answers.

Saat melintasi melalui setiap elemen dengan class ques_answers, kita mengambil pertanyaan ID menggunakan HTML data-atribut yang disebut data-quiz-id dan tombol radio yang dipilih menggunakan jQuery.

Akhirnya kami menetapkan semua pertanyaan dan jawaban yang dipilih ke dalam sebuah array yang disebut selected_answers, untuk dikirimkan ke request AJAX.

Lihatlah kode berikut untuk implementasi request AJAX.

Pertama kita membuat request AJAX menggunakan data konfigurasi ditetapkan dari fungsi wpq_frontend_scripts. Daftar jawaban yang dihasilkan di bagian sebelumnya akan dikirimkan sebagai data parameter. Sebelum menangani hasil, kita harus melihat pada pelaksanaan kode sisi server pada bagian berikut.

Menciptakan sebuah Handler AJAX di sisi Server

Pertama kita harus memperbarui konstruktor dengan action yang diperlukan untuk menggunakan AJAX untuk kedua login pengguna dan normal seperti ditunjukkan pada kode berikut.

Kemudian kita dapat pindah ke implementasi fungsi get_quiz_results seperti yang ditunjukkan pada kode berikut.

Penjelasan Kode

  • Jawaban yang dipilih untuk semua pertanyaan yang akan diterima menggunakan parameter data dalam $_POST array.
  • Kemudian kita mengambil ID pertanyaan dari setiap pertanyaan dengan mengganti awalan qid_.
  • Selanjutnya kita menerima jawaban yang benar dari setiap pertanyaan dari database menggunakan fungsi get_post_meta.
  • Selanjutnya kami memeriksa apakah jawabannya disediakan sesuai dengan jawaban yang benar dan membuat $question_results berdasarkan status hasilnya.
  • Sementara memeriksa jawaban, kita perlu untuk memperbarui nilai kuis menggunakan variabel $score.
  • Akhirnya kami menetapkan hasil kuis dan nilai ke array $quiz_result_data akan dikirim sebagai respon.

Hingga saat ini, kami menciptakan request AJAX dan dilaksanakan respon sisi server. Pada bagian berikutnya kita akan menyelesaikan proses generasi hasil kuis dengan penanganan respon AJAX.

Penanganan Data respon AJAX

Dalam respon penanganan bagian, kami memiliki beberapa tugas, termasuk tampilan hasil kuis dan nilai. Jadi aku akan memisahkan kode menjadi beberapa bagian untuk membuat penjelasan yang jelas. Pertimbangkan kode berikut yang berisi request AJAX lengkap.

Penjelasan dari bagian 1

Pertama, kita mengambil total pertanyaan kuis dari respon yang diterima dari server. Kemudian kami menggunakan fungsi next Rhino Slider untuk mengarahkan pengguna ke hasil slide. Kemudian kita menetapkan nilai pengguna dengan pertanyaan total dalam wadah #score.

Penjelasan tentang bagian 2

Bagian awal dari kode ini menghasilkan tabel HTML dengan judul yang diperlukan untuk menampilkan hasil. Kemudian kami menetapkan pertanyaan untuk tabel di dalam jQuery loop masing-masing. Kami telah menggunakan dua gambar untuk menampilkan status keberhasilan atau kegagalan pertanyaan.

Penjelasan tentang bagian 3

Awalnya kita harus memungkinkan scroll di halaman hasil seperti itu dapat cukup panjang untuk kuis dengan sejumlah pertanyaan. Atribut CSS overflow-y digunakan untuk memungkinkan scroll. Akhirnya kami menetapkan tabel hasil kuis ke dalam wadah #quiz_result dan menyembunyikan timer, yang kami akan mengimplementasikan pada bagian berikutnya.

Setelah kuis selesai, layar akan terlihat seperti sesuatu yang mirip dengan gambar berikut.

Screenshot-207

Menciptakan sebuah kuis Timer

Biasanya setiap ujian atau kuis memiliki jangka waktu yang telah ditetapkan. Jadi kita akan menggunakan durasi kami dikonfigurasi dalam halaman pengaturan plugin kami untuk menghasilkan timer kuis. Kami sudah terkonfigurasi timer tersembunyi pada buka halaman awal, dan akan terlihat pada form di shortcode.

Mari kita fokus pada timer secara dinamis mengubah menggunakan kode jQuery seperti ditunjukkan di bawah.

Kuis durasi diakses menggunakan array konfigurasi yang dimasukan menggunakan fungsi wp_localize_script. Durasi kemudian diubah menjadi detik dengan mengalikan dengan 60.

Kemudian kita menciptakan fungsi setTimeout untuk memulai timer. Dalam fungsi, kami mengurangi durasi 1 dan menetapkan untuk wadah #timer. Ketika waktu semakin ke nol, kita memanggil fungsi wpq_quiz_results untuk secara otomatis selesaikan kuis dan menghasilkan hasil.

Akhirnya, kita memanggil setTimeout fungsi rekursif untuk memperbarui sisa waktu. Kami telah menyelesaikan implementasi timer dan kuis Anda akan terlihat seperti gambar berikut dengan timer.

Screenshot-205

Rangkuman

Seluruh dua bagian seri ini, kami mengembangkan sederhana dan menyelesaikan beberapa pilihan kuis plugin untuk WordPress. Anda dapat memperluas fungsi plugin ini sesuai dengan persyaratan aplikasi Anda. Saya sarankan Anda bisa meningkatkan plugin dengan mencoba berikut:

  • Membuat cara untuk menetapkan pertanyaan untuk kuis bukan menghasilkan random kuis.
  • Simpan hasil kuis untuk pengguna yang login.
  • Membuat sebuah kuis kompetisi antara pengguna.

Biarkan saya tau saran Anda dan bagaimana kelanjutannya dengan extending plugin proses.

Menuggu untuk mendengar dari Anda.

Advertisement
Advertisement
Advertisement
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.