Apakah ada skema yang mudah dipahami untuk memutuskan jenis kode apa yang dimiliki plugin atau temanya functions.php
?
Ada yang banyak kasus dan banyak perdebatan tentang topik itu, terutama karena ada beberapa kesalahpahaman tentang cara kerja bagian dalam WordPress. Saya meminta jawaban berdasarkan fakta, bukan pada pendapat.
Itu harus menjelaskan bagaimana menangani poin-poin ini (dan mungkin lebih):
- jenis pos kustom dan taksonomi
- formulir kontak
- kode pendek
- widget khusus
add_theme_support( 'automatic-feed-links' );
- Fungsi SEO seperti
meta
elemen khusus - beralih tema
Sering ada pro dan kontra untuk kedua belah pihak. Pertanyaan kami yang paling populer. Kumpulan Kode Terbaik untuk file functions.php Anda mendapatkan banyak potongan kode sebagai jawaban yang setidaknya dapat diperdebatkan.
Kami membutuhkan kriteria yang bisa dipahami oleh pemula, mungkin daftar periksa - dengan alasan.
Lihat juga pertanyaan terkait oleh Chip Bennett di situs meta kami: Pertanyaan khusus yang meminta solusi "tanpa plugin"
Terkait: Di mana saya menempatkan potongan kode yang saya temukan di sini atau di tempat lain di web?
Jawaban:
Saya akan mulai dengan pertanyaan ini: Apakah fungsi terkait dengan presentasi konten, atau dengan generasi / manajemen konten, atau situs, atau identitas pengguna?
Jika fungsionalitas tidak terkait khusus dengan presentasi konten , maka itu tepat di dalam Wilayah Plugin. Daftar ini panjang:
wp_head
konten, seperti tautan kanonik, generator, dan meta HTML lainnya, dllJika fungsi terkait dengan presentasi konten , maka itu adalah kandidat untuk dimasukkan dalam Tema. Pada titik ini, saya akan kembali ke kriteria Theme-switch @ Raf912 : apakah Anda akan kehilangan fungsionalitas ketika Anda mengganti Tema? Jika jawaban untuk pertanyaan itu adalah tidak , maka fungsionalitasnya menjadi milik Tema. Beberapa contoh:
add_theme_support()
(saya kira yang ini harus jelas)Biasanya, dua pertanyaan ini akan memberikan garis diferensiasi yang cukup jelas; Namun, ada beberapa pengecualian.
Jenis Posting Kustom
Jenis Posting Kustom, misalnya, adalah sedikit hibrida yang unik dari pembuatan konten dan presentasi, mengingat cara Hierarki Templat bekerja untuk halaman indeks arsip tipe posting tunggal dan halaman posting tunggal . Aspek pembuatan konten CPT biasanya menempatkannya tepat di Wilayah Plugin; namun, Plugin tidak dapat menentukan halaman templat yang secara inheren sesuai dengan desain / tata letak / gaya untuk setiap Tema tertentu (terutama jika CPT menampilkan selain Judul / Konten / Meta biasa, atau memiliki taksonomi khusus yang terkait dengannya).
Jangka panjang, solusi untuk perbedaan ini, IMHO, adalah memiliki konvensi / konsensus standar untuk definisi CPT untuk jenis konten tertentu (daftar real estat, acara kalender, produk e-commerce, entri perpustakaan buku / media, dll. .). Dengan cara itu, konten yang dibuat pengguna akan tetap portabel antara Tema yang menerapkan definisi standar / konvensi dari CPT yang diberikan, sementara pengembang Tema mempertahankan fleksibilitas untuk menentukan desain / tata letak / gaya CPT dalam file template Tema.
Tautan Media Sosial
Demikian pula, saya biasanya mengatakan bahwa tautan profil media sosial, yang sudah ada di mana-mana dalam Tema saat ini, adalah Wilayah Plugin, karena tidak ada hubungannya dengan penyajian konten. Solusi terbaik adalah agar profil ini didefinisikan di suatu tempat di inti; namun, saat ini tidak ada sarana standar / konsensus untuk mendefinisikan tautan ini. Apakah mereka didefinisikan terbaik di tingkat pengaturan situs, atau berdasarkan per pengguna? Jika per-pengguna, meta pengguna mana yang terpapar dalam templat? dll.
Jadi sekali lagi, dalam jangka panjang, solusi untuk perbedaan ini adalah baik bagi inti untuk menentukan di mana tautan-tautan ini ditentukan, atau jika tidak bagi komunitas pengembang Tema untuk mengembangkan konsensusnya sendiri. Sementara itu, benar-benar tidak ada apa-apa selain membuat mereka tetap didefinisikan dalam setiap Tema.
sumber
add_theme_support( 'automatic-feed-links' );
tidak presentasional. Tapi itu diperlukan oleh pedoman tema . Mengapa risiko yang diperlukan untuk kehilangan fungsi ini setelah beralih tema?add_theme_support()
hanya dapat diimplementasikan melalui Tema. Penggunaanadd_theme_support( 'automatic-feed-links' )
di dalam Tema sebenarnya memastikan pengalaman yang konsisten dari Tema ke Tema, karena tautan umpan yang dihasilkan akan sama.Tes mudah di mana kode ditempatkan:
apakah Anda melewatkan fungsionalitasnya, apakah blognya tidak berfungsi dengan baik atau fragmen dari tema lama (mis. shortcode) ditinggalkan?
ya: masukkan ke dalam plugin
tidak: tinggalkan di functions.php
Contoh: Tulis kode pendek. Setelah beralih tema, kode pendek biasa dibiarkan dalam posting Anda. Jadi akan lebih baik ditempatkan di plugin.
Tulis fungsi untuk menuliskan komentar terakhir. Setelah beralih tema, semuanya baik-baik saja karena mungkin tema lain memiliki fungsi yang setara.
Itu benar-benar tergantung pada kode dan apa yang akan dilakukan. Beberapa kode hanya memengaruhi gaya atau konten tema, sebagian lainnya akan mengubah posting blog.
sumber
functions.php
. Jika perlu diterapkan ke lebih dari satu tema, masukkan ke dalam plugin.Saya tidak berpikir ada jawaban yang mudah untuk pertanyaan ini, tetapi saya yakin kita bisa membuat diagram alur untuk membantu dengan keputusan. Berikut ini garis besar kasar dari diagram alir tersebut, yang dapat dan harus diperluas. Beri komentar dengan saran!
sumber
Dari sini Tema VS Plugins
Tambahkan kode khusus ke tema anak sehingga ketika Anda memperbarui tema orang tua, kode kustom Anda tidak hilang.
Anda juga dapat membuat plugin khusus situs yang juga berisi semua kode khusus Anda.
Sejauh menulis kode versus plugin, Anda dapat menggunakan plugin untuk dan fungsi namun untuk sebagian besar yang Anda inginkan, pengkodean tangan adalah yang terbaik karena lebih mudah untuk dimodifikasi kecuali dalam beberapa kasus seperti kotak meta di mana Anda dapat mempertimbangkan menggunakan plugin kecuali jika Anda adalah pengembang tema.
http://codex.wordpress.org/Plugin_API/Filter_Reference/user_contactmethods
sumber
Saya tahu ini adalah kuda mati dan Chip telah menutupinya, tetapi ingin menambahkan beberapa pemikiran.
Jika Anda membuat program hidup dan menemukan diri Anda bekerja di situs wordpress di bawah tenggat waktu, Anda akan menemukan bahwa itu benar-benar turun ke waktu.
Lebih sering daripada tidak, terutama bagi mereka yang baru memulai, itu jauh lebih cepat dan sederhana untuk hanya menambahkan apa pun yang Anda butuhkan ke dalam tema dan menyebutnya selesai.
Yang sedang berkata, jika Anda bekerja di wordpress secara setengah reguler, Anda harus serius mempertimbangkan melakukan hal berikut :
Ini harus menangani semua yang biasanya perlu Anda lakukan dengan sebuah plugin, termasuk aktivasi, penonaktifan, pembaruan versi, membuat panel admin, dan mencopot pemasangan.
Jika Anda meluangkan waktu untuk melakukan ini, Anda akan menemukan:
Anda sekarang dapat membangun semuanya dengan benar dan menyelesaikan proyek di masa depan dengan lebih cepat.
Ini harus menangani semua yang biasanya dibutuhkan dalam sebuah tema:
Setelah selesai, buat kerangka tema anak yang menggunakan tema utama Anda.
Setelah Anda menyelesaikan dua hal ini, membuat situs baru untuk orang menjadi lebih cepat.
Jika Anda melakukan hal di atas, Anda dapat mengerjakan hal-hal berikut:
Dan, jika Anda melakukan semua hal di atas , Anda akan menemukan bahwa jawaban Chip tidak hanya ideal, tetapi juga akan menjadi optimal.
sumber
Jawaban sederhananya adalah ini ..
Apakah kode tergantung pada salah satu fungsi yang dibangun ke dalam tema tertentu? Jika ya, masukkan tema.
Apakah Anda ingin kode ini dapat ditransfer antara situs dan antar tema? Jika ya, masukkan plugin.
Jika jawabannya adalah tidak untuk kedua hal di atas, maka gambar situs 5 tahun di masa depan, ketika saatnya untuk mendesain ulang. Apakah fungsi kode Anda sedang menulis sesuatu yang akan bertahan pembaruan desain berikutnya? Jika ya, masukkan plugin.
Juga, jika Anda tidak menggunakan tema anak dan Anda berencana untuk memperbarui tema, saya juga menyarankan Anda menggunakan plugin.
sumber