Bagaimana saya mencegah plugin dimuat ketika melakukan WP-CLI?
12
Saat ini saya menggunakan kode ini di file plugin utama itu sendiri. Tetapi plugin itu bukan milik saya, jadi saya lebih memilih untuk dapat memutakhirkannya secara normal tanpa setiap kali menambahkan kode ini.
if(defined('WP_CLI')&& WP_CLI ){exit;}
Saya perlu melakukan ini karena plugin ini menghasilkan kesalahan dan menghentikan wp-cli untuk mengeksekusi dengan benar sehingga saya tidak bisa menonaktifkan plugin dengan wp-cli, melakukan tugas saya dan mengaktifkannya kembali.
Apakah ada cara saya dapat melakukan sesuatu seperti if x then do not load plugin file xdari dalam plugin-mu?
Ganti saja gravityforms/gravityforms.phpdengan direktori dan nama file plugin yang ingin Anda nonaktifkan.
Masalahnya di sini adalah bahwa kami mencoba untuk mempengaruhi pemuatan plugin, jadi kami tidak dapat melakukannya dari dalam plugin, karena sudah terlambat. Dalam temanya juga akan terlambat.
Untungnya WordPress memiliki "Harus Gunakan Plugin" ini adalah plugin yang dapat Anda tambahkan yang dimuat sebelum dan secara terpisah ke plugin biasa, dan tidak muncul dalam daftar plugin biasa.
Yang perlu Anda lakukan untuk menambahkan kode ini ke dalam Must Use Plugin adalah membuat wp-content/mu-pluginsdirektori (jika belum ada) dan membuat file PHP (bisa disebut apa saja) dengan kode itu di dalamnya. Anda tidak perlu header plugin atau apa pun.
Sekarang kode itu akan dimuat sebelum semua plugin lain ketika WordPress dimuat. Karena filter kami sudah ada, ketika WordPress mendapatkan daftar plugin aktif untuk memuat plugin yang ingin Anda nonaktifkan akan disaring dari daftar itu jika WP-CLI aktif.
Punya ide yang sama tetapi ini tidak berhasil. Setidaknya tidak di lingkungan lokal saya. Mungkin get_option()kembali lebih awal ketika nilainya disimpan dalam transien / serupa dan filter ini dilewati? (Tidak bekerja untuk kebanyakan kasus, hanya di layar plugin admin itu benar-benar dieksekusi)
kero
Hm Melihat sumber dan sejauh yang saya tahu satu-satunya alasan option_filter tidak diterapkan adalah jika tidak memiliki nilai dan mengembalikan default.
Jacob Peattie
Itu sebenarnya yang terjadi (tidak ada plugin aktif). Saya seharusnya tidak menjaga lingkungan pengujian saya terlalu bersih ..
Kero
1
Saya menerima ini karena dalam kasus saya itulah yang saya butuhkan. Meskipun secara umum --skip-plugin=xopsi wp-cli mungkin merupakan cara yang lebih baik untuk melakukannya.
NextGenTema
15
Anda dapat menggunakan skip-pluginsopsi di WP-CLI untuk tidak memuat plugin individual saat menggunakan WP-CLI.
Anda dapat menggunakannya dalam perintah seperti ini:
wp user list --skip-plugins=my-plugin
Atau Anda dapat menambahkan ini ke wp-cli.ymlfile Anda :
get_option()
kembali lebih awal ketika nilainya disimpan dalam transien / serupa dan filter ini dilewati? (Tidak bekerja untuk kebanyakan kasus, hanya di layar plugin admin itu benar-benar dieksekusi)option_
filter tidak diterapkan adalah jika tidak memiliki nilai dan mengembalikan default.--skip-plugin=x
opsi wp-cli mungkin merupakan cara yang lebih baik untuk melakukannya.Anda dapat menggunakan
skip-plugins
opsi di WP-CLI untuk tidak memuat plugin individual saat menggunakan WP-CLI.Anda dapat menggunakannya dalam perintah seperti ini:
Atau Anda dapat menambahkan ini ke
wp-cli.yml
file Anda :sumber
Hanya penamaan ulang nama dir plugin akan menonaktifkannya. Saya melakukannya kadang-kadang untuk sementara menonaktifkan plugin [linux]:
sumber