Saya menyiapkan tema anak untuk beberapa anggota fakultas saya, dan sebagai bagian dari tema, saya ingin beberapa plugin untuk diaktifkan pada saat tema diaktifkan. Jadi, tentu saja, saya menggunakan tindakan after_setup_theme dan memanggil fungsi pengaturan saya. Ini berfungsi dengan baik, kecuali itu berjalan pada SETIAP permintaan (admin dan sebaliknya). Saya membuktikan ini dengan menambahkan ini ke akhir fungsi pengaturan:
echo '<script type="text/javascript">alert("This action was run")</script>';
Dan sebagai hasilnya dapatkan peringatan javascript pada setiap permintaan admin dan setiap permintaan front-end (saya memiliki pengaturan jaringan, jadi jelas di situs di mana tema ini tidak aktif, itu tidak menjalankan fungsinya)
Jadi pertanyaannya adalah, apakah ini bug? Apakah saya entah bagaimana melakukan sesuatu yang salah? Berikut adalah kode lengkap yang saya gunakan:
add_action( 'after_setup_theme', 'fwp_setup' );
function fwp_setup(){
// -- Unrelated code remove for the sake of brevity
require_once($_SERVER['DOCUMENT_ROOT'].'/wp-admin/includes/plugin.php');
activate_plugin('enable-media-replace/enable-media-replace.php');
activate_plugin('seo-image/seo-friendly-images.php');
activate_plugin('w3-total-cache/w3-total-cache.php');
echo '<script type="text/javascript">alert("This action was run")</script>';
}
Wawasan apa pun akan sangat dihargai!
sumber
after_switch_theme
melakukan persis seperti yang saya maksudkan di sini. Ini menyala setelah tema beralih ke tema Anda. Salah satu solusi yang disebutkan di bawah ini menggunakanswitch_theme
. Ini tidak memiliki hasil yang diinginkan, karena itu hanya terjadi pada saat beralih dari tema Anda. Referensi komentar Trac iniJawaban:
SOLUSI:
after_switch_theme
melakukan persis seperti yang saya maksudkan di sini. Ini menyala setelah tema beralih ke tema Anda. Salah satu solusi yang disebutkan di bawah ini menggunakanswitch_theme
. Ini tidak memiliki hasil yang diinginkan, karena itu hanya terjadi pada saat beralih dari tema Anda.Ini adalah artikel yang saya temukan sebagai referensi: http://core.trac.wordpress.org/ticket/7795#comment:29
Ini kode saya yang dimodifikasi
sumber
The
after_setup_theme
tindakan dimaksudkan untuk api pada setiap beban WordPress. Ini hanyalah bagian dari proses di mana WordPress memanggil sistem template, menentukan berbagai parameter pengaturan untuk Theme, dan kemudian melanjutkan dengan pemrosesan selanjutnya, seperti menentukan template yang benar untuk ditampilkan, dll.Dengan kata lain, itu
after_setup_theme
mewakili titik di mana WordPress mengatur Tema saat ini, bukan titik di mana administrator mengaktifkan dan / atau mengkonfigurasi Tema saat ini.Apa yang Anda cari adalah kait aktivasi Tema , yang saat ini tidak tersedia, tetapi sedang dalam pertimbangan / pengembangan .
sumber
init !== activation
. Biasanya Anda memanggil__construct()
fungsi di php juga sebuahinit
fungsi. Itu berarti: Inisialisasi instance.Sayangnya tidak ada kait tema-aktivasi. Namun, pertanyaan ini memang memberikan solusi untuk itu.
Cukup gunakan 'kait aktivasi tema' untuk mengaktifkan plug-in.
Solusi yang lebih baik, sepanjang nada yang sama adalah yang ini . Keduanya pada dasarnya menggunakan
switch_theme
pengait.Sesuai komentar OP dan tiket trac terkait -
after_switch_theme
adalah kail yang diperlukan.Ini melewati nama tema lama sebagai argumen. Namun, jika ini ada di Anda
functions.php
(yang seharusnya ...) callback hanya akan aktif ketika tema Anda sedang diaktifkan .Demikian pula menambahkan callback
switch_theme
hanya akan dipanggil ketika tema Anda dinonaktifkan.sumber
switch_theme
hanya berfungsi setelah menonaktifkan tema. Namun,after_switch_theme
berhasil dengan sempurna.Solusi yang lebih baik mungkin menggunakan skrip aktivasi plugin Thomas Griffin . Ini akan meminta pengguna memasang plugin pilihan Anda saat tema sedang digunakan. Saya pikir ini adalah cara yang bagus untuk memisahkan plugin dari tema, dan masih bisa menggunakannya.
Di dalam tema Anda, periksa apakah plugin itu aktif sebelum menggunakan fungsinya. Ini akan memungkinkan pengguna lebih banyak pilihan dan kontrol.
Anda dapat mengatur skrip aktivasi dengan mudah dengan Knapsack .
sumber
Perbaikan terbaik Anda sekarang adalah dengan menggunakan
switch_theme
hook dan filter argumen '$ theme' yang disahkan untuk melihat apakah itu yang sekarang maka jika tidak kembali;sumber