Saya menggunakan WordPress 3.0.5 dan telah diuji dengan 3.1rc4. Di file PHP utama plugin saya, ketika saya mencoba menelepon is_plugin_active saya dapatkan Call to undefined function is_plugin_active()
. Saya dapat memanggil add_action dan add_filter. Apa yang harus saya periksa / ubah untuk memperbaikinya?
Ini terjadi di dalam admin pada halaman Plugin. Di atas file plugin utama saya, if (function_exists('is_plugin_active')) {
yang selalu bernilai false.
Saya juga tidak dapat melihat fungsi dari file plugin utama saya di plugin lain (jika itu membantu).
function_exists('is_plugin_active')
itu salah ketika dipanggil dari file plugin utama jika di luar metode tetapi benar ketika dipanggil di dalam metode yang dipanggil untukactivated_plugin
tindakan.Jawaban:
Itu karena file yang is_plugin_active () didefinisikan -
wp-admin/includes/plugin.php
- hanya dimuat di admin, setelah plugin Anda dimuat.Dengan demikian, Anda hanya dapat memanggilnya setelah 'admin_init' dipecat:
sumber
Anda dapat memanggil is_plugin_active () di templat dan dari halaman pengguna juga, yang dapat berguna untuk plugin terkait (yaitu memerlukan plugin 'xyz' untuk mengoperasikan plugin baru saya). Anda harus secara manual memasukkan file plugin.php seperti yang tercantum dalam dokumen is_plugin_active () pada Codex.
Berikut ini adalah contoh fungsional yang saya gunakan dalam paket add-on premium saya untuk memastikan plugin basis gratis aktif sebelum memanggil objek add-on. Ini membutuhkan kait & filter tertentu untuk tersedia di plugin dasar atau itu akan macet.
Selain itu, jika Anda mengalami masalah dengan is_plugin_active () dari dalam login admin aktif, kemungkinan karena Anda menguji sebelum admin_init kebakaran. admin_menu diaktifkan sebelum admin_init dan melakukan tes di admin_menu telah "menggigit" saya sebelumnya. Nama "admin_init" yang tampaknya kontra-intuitif bagi saya karena admin_menu sudah dijalankan. Saya menganggap init sebagai "hal pertama yang harus dijalankan" ... mungkin admin_kinda_init () akan lebih baik. :)
sumber
include_once(ABSPATH.'wp-admin/includes/plugin.php');
melakukan trik untuk saya. Terima kasih!Solusi cepat dan kotor adalah untuk menduplikasi fungsi secara manual:
Ini cukup pendek sehingga seharusnya tidak terlalu sulit untuk diterapkan dalam kode Anda sendiri sebagai solusinya.
sumber
Sederhana dan mudah. Diambil dari WP
dan kemudian setiap contoh
periksa fungsinya. JADI tidak ada lagi kesalahan.
sumber
requireonce
Anda mungkin tidak perlu memeriksa fungsinya ...?Saya lebih suka jawaban Tom Auger dengan cara mendefinisikan fungsi is_plugin_active Anda sendiri daripada memasukkan plugin.php. Namun, menggunakan nama fungsi yang sama menyebabkan area admin saya mogok. Menggunakan nama fungsi yang berbeda menyelesaikannya:
sumber
Apakah Anda menggunakan
is_plugin_active
di dalam admin atau front-end? Saya cukup yakin ituis_plugin_active
hanya fungsi admin yang ditemukan di dalam wp-admin / include / plugin.php.Selain itu, apakah file plugin utama Anda menggunakan Wordpress File Header ? Apakah plugin Anda dimasukkan setelah file plugin.php di atas dimuat?
sumber
Untuk debug plugin aktif:
Untuk memeriksa plugin tertentu:
Tindakan ini disebut "
active_plugins
" IIRC.sumber
Tidak satu pun dari solusi ini yang bekerja untuk saya, tetapi ini berhasil:
Saya menemukan solusi ini di codebangers.com
sumber