Semua dokumentasi yang saya temui membahas fungsi pluggable utama melalui plugin Anda.
Bagaimana jika Anda melakukan pengembangan tema?
Functions.php saya memerlukan file lain yang mengesampingkan get_user_by()
fungsi, didefinisikan dalam pluggable.php
.
Jika saya menghilangkan if( function_exists() )
panggilan, saya mendapatkan kesalahan "Tidak dapat mendeklarasikan ulang ...".
Jika saya memasukkan if( function exists() )
panggilan, maka saya tidak mendapatkan kesalahan, tetapi tentu saja fungsi saya kemudian diabaikan, karena versi pluggable ada.
Berdasarkan posting Dominic yang luar biasa pada urutan startup WordPress , jelas yang pluggable.php
dimuat sebelum tema Anda functions.php
dan sebagainya, sehingga menjelaskan kesalahan.
Jadi pertanyaannya adalah - bagaimana Anda bisa mengambil keuntungan dari arsitektur pluggable yang bagus dari dalam suatu tema, tanpa harus menulis plugin yang kemudian harus dibundel atau diinstal dengan tema?
Catatan lebih lanjut : Jadi nampaknya argumennya adalah bahwa tema tidak boleh mencoba melakukan apa yang dilakukan plugin. Tapi argumen itu sudah lebih dari empat tahun (menurut nomor trac 4 digit). Saya ingin mendengar dari beberapa pemukul berat apakah filosofi ini masih berlaku, mengingat topologi kompleks dari lanskap pengembangan tema saat ini. Saya ingin percaya bahwa kita telah berevolusi sejak saat itu.
Konteks : Saya sedang mengembangkan solusi CMS satu kali untuk pelanggan, dengan banyak metadata khusus, kustomisasi Admin back-end, proses login / otentikasi, pekerjaan. Dan tentu saja, ada komponen desain - di situlah bagian tema masuk. Faktanya, ini adalah komponen yang tidak dapat digunakan kembali - mereka tidak akan pernah berlaku untuk klien lain, mereka tidak akan pernah ditempatkan di bawah GPL dan open source, dan mereka yang paling tentu saja tidak akan didistribusikan / diinstal pada penyebaran WordPress lainnya. Paling-paling ada beberapa praktik terbaik yang akan saya manfaatkan pada proyek-proyek masa depan, tetapi itu hanya akan menjadi pekerjaan referensi / salin-tempel.
Ini kedengarannya bukan kasus penggunaan untuk plugin bagi saya. Tema diinstal, mungkin tema anak dari Twenty Eleven, mungkin mandiri, fungsinya. Php panggilan dalam satu kapal berisi, masing-masing menangani aspek yang berbeda dari CMS yang bersangkutan. Kemudian file templat tema menggunakan 'templat tag' khusus yang ditentukan di dalamnya. Saya tidak ingin memiliki file tema dengan dependensi pada beberapa plugin atau yang sedang diaktifkan, dll. Itu tidak masuk akal untuk membangun kompleksitas ke dalam sistem. Tentu, saya dapat meletakkannya di folder plug-in yang harus digunakan, tetapi itu masih terasa seperti hack - sekarang, semua yang ada hubungannya dengan penyesuaian yang dibuat untuk proyek ini terkandung di dalamnya wp-content/themes/my-theme/
. Saya juga tidak mau harus mempertimbangkan untuk mencari hal-hal di beberapa folder plugin juga.
Jangan salah sangka. Saya suka plugin dan saya menggunakannya dan menulisnya. Dan saya menggunakan plugin dalam hubungannya dengan pengembangan tema yang sangat dikustomisasi ketika plugin ini adalah pihak ketiga dan mewakili praktik terbaik jauh melampaui apa yang saya bisa jalankan dalam jangka waktu yang masuk akal. Tetapi ketika saya perlu memodifikasi fungsionalitas inti untuk skenario satu kali, saya beralih ke kait tindakan, kait filter, dan saya ingin dapat mengandalkan fungsi yang dapat dicolokkan bagi pengguna dan sisi otentikasi hal-hal juga.