Saya sedang membangun sebuah plugin yang menambahkan fungsionalitas tambahan ke sebuah plugin utama. Idealnya di layar administrasi plugin, tautan "aktifkan" harus dinonaktifkan dan catatan sebaris harus ditambahkan yang memberi tahu pengguna untuk menginstal dan mengaktifkan plugin utama terlebih dahulu sebelum ia dapat menggunakan plugin saat ini.
plugin-development
kosinix
sumber
sumber
if (is_plugin_active('path/to/plugin.php')) { // Do something }
Jawaban:
Terima kasih atas jawabannya kawan. Meskipun kedua jawaban itu menempatkan saya di jalan yang benar, tidak ada yang berhasil. Jadi saya membagikan solusi saya di bawah ini.
Metode 1 - Menggunakan register_activation_hook:
Buat Plugin Induk di plugins / parent-plugin / parent-plugin.php:
Buat Child Plugin di plugins / child-plugin / child-plugin.php:
Perhatikan bahwa saya tidak menggunakan
deactivate_plugins( $plugin );
karena beberapa alasan tidak berfungsi. Jadi saya menggunakan wp_die untuk membatalkan pengalihan aktivasi dan memberi tahu pengguna.Keuntungan:
Kekurangan:
Metode 2 - Menggunakan admin_init dan admin_notices
Buat Plugin Induk di plugins / parent-plugin / parent-plugin.php:
Buat Child Plugin di plugins / child-plugin / child-plugin.php:
Keuntungan:
Kerugian:
Adapun pertanyaan saya tentang menonaktifkan tautan aktif, saya dapat menggunakan:
Namun, ternyata sangat tidak praktis karena TIDAK ada tempat untuk meletakkan kode ini. Saya tidak bisa meletakkannya di plugin induk karena plugin induk harus aktif untuk menjalankan kode ini. Tentu saja bukan milik plugin anak atau functions.php. Jadi saya membatalkan ide ini.
sumber
Coba ini, ini dikomentari, sehingga akan membantu Anda memahaminya.
Jika ini menghasilkan kesalahan, Anda juga dapat memeriksa 'opsi' dari 'myplugin' dan mengaturnya ke false atau tidak diaktifkan.
sumber
Kedua solusi yang disarankan memiliki kekurangan.
Metode 1: Seperti yang disebutkan, layar wp_die () akan MASIH muncul ketika Plugin Induk dan Plugin Anak diaktifkan secara bersamaan menggunakan kotak centang di layar admin plugins.
Metode 2: Dalam beberapa kasus penggunaan, ini tidak baik karena 'admin_init' dieksekusi dengan cara setelah 'plugins_loaded' ( https://codex.wordpress.org/Plugin_API/Action_Reference ), dan setelah kait penghapusan instalasi ( https: // codex. wordpress.org/Function_Reference/register_uninstall_hook ). Jadi misalnya, jika kita ingin add-on untuk menjalankan beberapa kode pada penghapusan instalasi apakah plugin induk aktif atau tidak, pendekatan ini TIDAK akan berfungsi.
Larutan:
Pertama-tama, kita perlu menambahkan kode berikut ke akhir file PHP utama induk plugin:
Ini akan mengirimkan acara / sinyal ke semua pelanggan, dengan mengatakan bahwa plugin inti telah dimuat.
Maka, kelas add-on akan terlihat seperti berikut:
Semoga bisa membantu :)
sumber
Saya pikir Anda perlu Aktivasi Plugin TGM .
sumber