Saya ingin mendapatkan beberapa pendapat mengenai praktik terbaik untuk mengembangkan plugin WordPress yang menyediakan integrasi tema.
Agar masuk akal ketika saya mengajukan pertanyaan ini, izinkan saya mulai dengan contoh hipotetis skenario yang saya ingin tahu. Bayangkan saya membuat plugin yang disebut "Diskografi". Diskografi mendaftarkan tiga jenis pos khusus: "Band", "Album", dan "Tracks". Plugin ini juga menyediakan kotak meta yang memberikan detail untuk setiap jenis posting, serta, taksonomi khusus untuk mengatur setiap jenis posting. Jenis posting ini diikat bersama dengan plugin Tulisan 2 Tulisan . Di dalam admin, pengguna dapat menambahkan band baru, yang dapat dikaitkan dengan album, yang, pada gilirannya, dikaitkan dengan trek, yang semuanya akan memiliki banyak data lain ditambahkan kepada mereka melalui kotak meta dan taksonomi.
Sekarang, saya tidak ingin plugin ini hanya mengatur admin bagi pengguna untuk memasukkan informasi ini; Saya ingin ini memberikan beberapa tampilan default untuk data. Pengguna / pengembang yang lebih maju akan baik-baik saja hanya memiliki admin ini. Akan cukup mudah baginya untuk mengambil data itu dan menggunakannya dalam tema; namun, tanpa beberapa tampilan default, plugin ini tidak akan berguna bagi sebagian besar pengguna. Untuk contoh ini, Anda bisa menampilkan apa saja seperti (tanda kurung menunjukkan cara info dapat ditampilkan dalam urutan hierarki templat):
- Band (single-prefix-band.php, single.php, index.php, shortcode)
- Album (awalan-album.php, single.php, index.php, kode pendek)
- Trek (awalan-tunggal-track.php, single.php, index.php, kode pendek)
- Daftar Band (template-band-list.php, halaman-band-listing.php, halaman- {id} .php, page.php, index.php, shortcode)
- Daftar Album (template-album-list.php, halaman-album-listing.php, halaman- {id} .php, page.php, index.php, shortcode)
- Garis Waktu Album (template-album-timeline.php, halaman-album-timeline.php, halaman- {id} .php, page.php, index.php, shortcode)
Penting bahwa ada beberapa presentasi default untuk jenis posting ini karena file template default tidak akan menampilkan semua informasi yang diperlukan untuk masing-masing jenis posting. Misalnya, tema Twenty Eleven, secara default, hanya akan menunjukkan nama, kategori, deskripsi, dan tanggal posting untuk sebuah album. Tidak terlalu berguna untuk album. Saya ingin memberikan templat posting tunggal yang menarik di band, tanggal rilis, label rekaman, versi album, trek, dll. Sebagai pengembang plugin saya akan merasa bahwa itu akan penting untuk diberikan. Saya tahu templat tidak akan berfungsi untuk setiap tema, tetapi harus ada beberapa default yang dapat diintegrasikan lebih lanjut dengan tema pengguna.
Sekali lagi, saya ingin tahu tentang apa cara terbaik untuk menangani situasi ini? Saya pikir Anda bisa melakukan salah satu dari yang berikut ini.
Kode pendek
Shortcode dapat digunakan sebagai cara yang sangat fleksibel dan ramah pengguna untuk memungkinkan non-dev menambahkan band, album, trek, daftar band, dll. Di mana saja di situs. Akan sangat membantu untuk menampilkan band pada halaman tertentu atau membuat halaman terpisah untuk setiap band (tidak terlalu efisien, tetapi beberapa pengguna melakukan pendekatan dengan cara ini). Kode pendek akan menghasilkan HTML, yang akan diikat ke file CSS yang disediakan yang akan memberikan tampilan default yang bagus dari data yang diinginkan. Semuanya akan terkandung dalam file plugin dan tidak ada yang perlu dilakukan dengan tema.
File Templat
Plugin juga dapat dikirimkan dengan file templat. File template dapat ditandai dan ditata untuk tampilan default yang bagus. Anda dapat memberikan instruksi bagi pengguna Anda untuk memindahkan file ke folder tema sehingga tema akan menemukan template yang tepat ketika jenis posting dilihat. Anda bahkan dapat bertindak lebih jauh dengan menyediakan antarmuka untuk memungkinkan pengguna memindahkan file dengan satu klik (catatan: Saya tidak akan membuat file di folder tema pengguna saat aktivasi karena menambahkan file ke tema mereka tanpa mereka memulai itu jahat) .
Anda juga dapat menggunakan filter untuk memanfaatkan file-file ini tanpa memindahkannya dari folder plugin, menjaga semuanya tetap lengkap. Saya telah melihat filter "template_include" dan "{$ type} _template" yang digunakan untuk tujuan ini. Bahkan, Anda bisa menggunakan templat dari folder tema dan jika tidak ada, Anda dapat kembali ke filter ini untuk memberikan tampilan default.
Pertanyaan
Saya ingin tahu apa yang dipikirkan orang lain sebagai praktik terbaik untuk situasi ini, jika ide yang disajikan bermasalah dengan cara apa pun, dan alternatif apa pun yang belum saya sertakan.
Terima kasih!