Apakah ada file global functions.php yang berfungsi untuk setiap tema?

11

Apakah ada jenis global file functions.php yang berfungsi untuk setiap tema?

Masalahnya ada di sini:

Ketika saya mengubah file functions.php dalam tema apa pun, saya harus menangani dua perubahan: Pertama, saya harus menjaga pembaruan tema tersebut. Kedua, saya harus berhati-hati dalam mengubah tema situs.

Jadi, alih-alih membuat perubahan pada functions.php suatu tema, apakah mungkin membuat perubahan pada beberapa file functions.php yang tidak tergantung pada tema apa pun?

Mert Nuhoglu
sumber
4
Apakah karunia itu benar-benar diperlukan? Pertanyaannya sudah memiliki jawaban yang bagus
onetrickpony
Karena @Mohit Bumb adalah orang yang memberikan a) hadiah dan b) adalah orang pertama yang menyarankan menggunakan plugin, saya akan mengatakan dia harus menjadi orang yang mendapatkan poin rep (kembali). IMO karunia itu tidak perlu (dan saya kira ia tidak tahu bahwa ia harus benar-benar memberikan diri ).
kaiser

Jawaban:

15

Perbedaan antara tema dan kode non-tema adalah organisasi daripada teknis. Kode apa pun yang aktif berkontribusi pada lingkungan yang dihasilkan, tidak masalah dari mana kode itu diambil.

Ada sejumlah tempat kode berasal, yang bukan bagian dari inti WordPress:

  • wp-config.php file konfigurasi
  • tema aktif (dan orang tuanya dalam untuk tema anak)
  • plugin aktif
  • harus menggunakan plugin
  • drop-in (ini agak canggih dan melayani tujuan yang sangat spesifik)

Tempat khas untuk kode Anda sendiri, yang seharusnya tidak menjadi bagian dari tema, adalah membuat plugin. Pendekatan lain tidak memiliki manfaat dari kasus generik, tetapi antarmuka forfeit (mengelola melalui admin area) dan teknis (aktivasi / deaktivasi / uninstall peristiwa) kenyamanan plugin normal.

Jarang
sumber
+1 untuk Anda dan @kaiser. Saya percaya jawaban yang benar adalah 1) Buat Tema Anak untuk menampung fungsionalitas khusus functions.php, atau 2) membuat Plugin kustom untuk menampung fungsionalitas itu, sehingga portabel di antara berbagai Tema.
Chip Bennett
@Chip sejak pertanyaan bertanya tentang melestarikan kode ketika beralih tema saya tidak melihat tema anak cocok. Bagaimana jika Anda ingin beralih ke tema yang merupakan tema anak? Plugin paling sesuai untuk persyaratan yang diberikan.
Jarang
itu sebabnya saya memilih kalian berdua. :) Tapi, Anda masih bisa menggunakan Tema Anak saat mengganti Tema; cukup ganti Template:tag dengan tepat di Tema Anak style.css.
Chip Bennett
@Chip Anda tidak mengerti maksud saya. Bagaimana jika saya ingin menggunakan tema anak? Saya membuat tema anak untuk Twenty Eleven dengan kode saya. Lalu saya ingin beralih ke tema yang juga tema anak dari Twenty Eleven (atau orang tua lainnya). Saya tidak memiliki jalur, selain menggabungkan dua tema anak secara manual. Kemudian un-penggabungan waktu berikutnya saya mengubah tema. Ini berantakan.
Rarst
Saya menggunakan harus digunakan untuk ini. Saya menemukan ini sebagai cara cepat dan mudah untuk menambahkan fungsi, kait, dan kode pendek yang tersedia untuk digunakan di seluruh tema
chiliNUT
6

Nah itu adalah masalah nyata dan banyak orang yang menghadapinya ketika mereka mengubah tema tetapi ada solusi sederhana.

tambahkan fungsi itu ke halaman baru bukan functions.php dan berikan nama yang unik misalnya yousitename + timestamp atau apa pun yang Anda inginkan tetapi unik buat folder dengan nama yang sama di-zip dan unggah sebagai plugin sehingga pasti akan berfungsi sampai Anda menonaktifkannya .

Untuk memahami plugin mana yang tidak ketinggalan memberi nama pada plugin itu seperti:

/*
Plugin Name: XYZ
*/
Mohit Bumb
sumber
3

Sebagai tambahan untuk jawaban @MBTheDeveloper.

Pilihan lain adalah:

  1. Buat tema anak untuk tema Anda saat ini dan gunakan file functions.php dari yang ini (ini adalah "praktik terbaik").
  2. Gunakan includedi file tema fungsi php Anda dan memuat file custom-function.php yang berisi kode kustom Anda.
kaisar
sumber
2

Jangan membuat perubahan spesifik situs Anda di file functions.php tema.

Alih-alih, buat plugin khusus situs. Saya suka menggunakan nama domain situs, seperti "ottopress.com". Lalu masukkan potongan Anda ke plugin itu dan biarkan aktif di situs itu saja.

Atau, ketika Anda memiliki potongan perubahan terkait, buat plugin khusus untuk hanya mereka. Itu memberi Anda opsi untuk mengaktifkan / menonaktifkan bit kode terkait yang diperlukan.

Otto
sumber
2

Beberapa Penjelasan

Pertama, Anda perlu memahami tujuan functions.php dalam sebuah tema. Functions.php pada dasarnya hanya sebuah file plugin tanpa nama apa pun yang jika ada secara otomatis dimuat oleh Wordpress. Wordpress memuat function.php tema Anda saat ini untuk halaman front-end wordpress dan juga halaman back-end (admin).

Tidak ada perbedaan antara plugin dan functions.php kecuali bahwa plugin memiliki nama dan mereka dapat diaktifkan / dinonaktifkan terlepas dari plugin dan tema lainnya. The funtions.php dilampirkan dengan tema Anda saat ini dan jika Anda beralih ke tema lain Wordpress menggunakan functions.php tema baru dan bukan functions.php lama Anda dengan modifikasi khusus.

Pembaruan tema juga menimpa functions.php dan tidak ada cara untuk menghindarinya, bahkan jika Anda memasukkan modifikasi khusus Anda dalam file kode terpisah dan memasukkannya ke fucntions.php Anda, Anda harus menambahkan baris sertakan setelah setiap pembaruan.

Umumnya jenis kode yang harus masuk dalam functions.php:

  • fungsi yang digunakan dalam file template tema Anda.
  • opsi tema
  • sidebars
  • menu navigasi
  • format posting
  • memposting gambar kecil
  • kode apa pun yang hanya terkait dengan tema saat ini.

Karena Anda ingin mempertahankan modifikasi khusus meskipun Anda mengganti tema. Karena tema anak tidak akan berfungsi dalam kasus ini karena Anda akan mengganti tema dan fungsinya. Php tema anak tidak akan digunakan.

Solusinya

Satu-satunya solusi yang direkomendasikan oleh @Otto adalah membuat file plugin. Pendekatan yang dapat Anda lakukan untuk membuat plugin khusus situs Anda adalah membuat folder dengan nama pengguna di 'wp-content / plugins' dan membuat file plugin di dalamnya.

Mengapa file plugin? dan bukan file plugin tunggal.

Fungsionalitas situs terkait grup terkait dengan kode dalam file plugin terpisah dan jangan lupa untuk menambahkan header plugin di semua file plugin Anda sehingga mereka dikenali oleh Wordpress sebagai plugin terpisah. Anda kemudian akan memiliki kemampuan untuk mengaktifkan / menonaktifkan fitur yang berbeda / fungsi situs Anda tanpa merusak semuanya.

Hameedullah Khan
sumber