Saya mendapat masalah bahwa saya harus memuat functions.php
file tema orang tua saya sebelum file tema anak saya functions.php
dimuat. Ini diperlukan untuk prosedur pengaturan & init. Saya melihat kait di dalam /wp_core_root/wp-settings.php (bernama:) do_action('setup_theme');
.
Masalahnya adalah saya tidak tahu bagaimana cara menghubungkan ke sana, karena file pertama yang saya dapatkan adalah tema anak functions.php
, jadi tidak add_action( 'setup_theme', 'my_init_function' );
akan berfungsi.
Sunting:
a) Saya tahu bahwa plugin memuat lebih awal dari tema dan karena itu dapat mengakses bahkan Permintaan awal, tetapi saya tidak ingin bergantung pada Plugin.
b) Ini kode (disingkat) dari file wp-settings.php
// happens a lot earlier:
do_action( 'plugins_loaded' );
// localize stuff happening here
do_action( 'setup_theme' );
// Load the functions for the active theme, for both parent and child theme if applicable.
if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) )
include( STYLESHEETPATH . '/functions.php' );
if ( file_exists( TEMPLATEPATH . '/functions.php' ) )
include( TEMPLATEPATH . '/functions.php' );
// first available hook, *after* functions.php was loaded
do_action( 'after_setup_theme' );
Saya ingin menghindari dua hal: Pertama banyak penjelasan kepada pengguna. Kedua kemungkinan seseorang mematahkan apa pun jika talinya memotong dengan tidak sengaja menghapus prosedur init orang tua. Orang hanya akan bermain di dalam functions.php tanpa mengambil risiko untuk memecahkan apa pun tanpa menyadarinya.
Dengan kata lain: Bagaimana cara menjaga file theme.fp tema anak saya bersih, tetapi apakah bootstrap tema induk sudah selesai?
Ada ide? Terima kasih banyak!
functions.php
. Lihatlah file "molto loko"wp-settings.php
di core (line: 275-279 @wp 3.1 rc) ... terlihat seperti ini:,if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) ) include( STYLESHEETPATH . '/functions.php' ); if ( file_exists( TEMPLATEPATH . '/functions.php' ) ) include( TEMPLATEPATH . '/functions.php' );
jadi saya tidak dapat melihat peluang ... Dan saya tidak ingin menggunakan sebuah plugin untuk mem-bootstrap tema saya.include(/path/to/parent/themes/functions.php)
di bagian atas tema functions.php anak Anda, maka semua yang ada di sana dimuat sebelumnya. Tidak?Jawaban:
Justin Tadlock baru-baru ini menulis posting yang bagus tentang membuat file functions.php yang lebih baik di
mana (jika saya ingat dengan benar) ia berurusan dengan masalah yang tepat ini.
Sayangnya situsnya sedang down saat ini jadi saya harus mengandalkan ingatan saya untuk saat ini.
Anda berada di jalur yang benar dengan
after_setup_theme
hook.Lihat contoh di bawah ini.
functions.php
file.Sedikit kode bernilai ribuan kata - tema orang tua Anda
function.php
akan terlihat seperti ini:sumber
after_setup_theme
ini sudah terlambat, karena file functions.php sudah dimuat.Pertama, kamu tidak bisa. Function.php tema anak selalu memuat pertama, titik.
Kedua, tema tidak dapat terhubung ke setup_theme. Plugin bisa, tetapi hal pertama yang bisa dihubungkan tema adalah after_setup_theme.
Jika orang tua Anda dirancang dengan benar, maka anak tersebut mampu mengesampingkan fungsi dan hal-hal di dalam orang tua, tetapi hanya saat memuat terlebih dahulu.
Secara umum, jika Anda pikir Anda perlu memuat file fungsi orang tua terlebih dahulu, maka Anda mungkin melakukannya dengan salah. Anda perlu menjelaskan masalah yang lebih besar.
sumber
after_setup_theme
hook? Hanya untuk tidak "spam" kail, atau karena itu lebih "giat" atau "kool" er? Maksud saya: Apakah ide "praktik terbaik" di balik kait paralel tema khusus "tinggalkan kait inti untuk plugin"? (Begitulah cara saya mengatasinya saat ini.)Jadi Anda mencoba mengeksekusi kode dari functions.php anak, tetapi setelah tema induk dimuat. Sederhana, cukup gunakan tindakan khusus:
Di akhir
parent/functions.php
:Dalam
child/functions.php
:Semua tema orangtua layak diberi garam, lakukan dengan cara ini. Terlebih lagi, mereka memiliki beberapa tindakan lain dan filter yang disebarkan agar tema anak dapat digunakan.
sumber
Mengapa Anda tidak memasukkan
functions.php
file tema orang tua ke file tema anakfunctions.php
, seperti ini:Dalam
functions.php
file tema anak :Dengan cara ini,
functions.php
file tema induk tidak diubah (terkadang ini penting).sumber
Saya memiliki masalah yang sama sebelumnya dan saya memperbaikinya dengan membuat "child-functions.php" ekstra kosong pada orangtua dan memasukkan ke dalam "functions.php" (parent juga) tepat setelah file / fungsi yang ingin saya gunakan pada child, kemudian di child theme saya membuat file "child-functions.php" dan ada di mana saya bisa mulai mensimulasikan menjalankan child.fp run setelah orangtua bukan solusi yang elegan tapi berhasil.
sumber