<?php
/*
Plugin Name: Conditional Deactivation of Plugins
*/
/* This must be installed as a must use plugin */
add_filter('option_active_plugins', function($plugins) {
return array_filter($plugins, function($plugin) {
return ! (*some condition on $_REQUEST* && in_array($plugin, [ *list of plugins to exclude* ]));
});
});
活動插件列表存儲爲選項'active_plugins'。這可以通過修改get_option('active_plugins')的返回值來工作。由於調用get_option('active_plugins')是在加載過程的早期完成的,因此該代碼無法安裝在普通插件或主題的functions.php中,因爲該代碼在調用get_option('active_plugins')之後運行。但是,必須使用插件在調用get_option('active_plugins')之前加載。
get_option的返回值( 'active_plugins')是這樣的:
Array
(
[0] => google-analytics-for-wordpress/googleanalytics.php
[1] => nggtags-for-wp-media-library/nggtags-for-wp-media-library-loader.php
[2] => wordpress-seo/wp-seo.php
)