WordPress加载插件的第一件事是获取保存在数据库中的活动插件:
$active_plugins = (array) get_option( \'active_plugins\', array() );
因为它使用
get_option()
我们可以使用
option_active_plugins
筛选以动态修改活动插件列表。
function wpse_301282_disable_plugin( $active_plugins ) {
if ( defined( \'WP_CLI\' ) && WP_CLI ) {
$key = array_search( \'gravityforms/gravityforms.php\', $active_plugins );
if ( $key ) {
unset( $active_plugins[$key] );
}
}
return $active_plugins;
}
add_filter( \'option_active_plugins\', \'wpse_301282_disable_plugin\' );
只需更换
gravityforms/gravityforms.php
包含要禁用的插件的目录和文件名。
这里的问题是,我们试图影响插件的加载,所以我们不能在插件中这样做,因为为时已晚。在主题上也太晚了。
谢天谢地,WordPress"Must Use Plugins" 这些是您可以添加的插件,它们在加载之前和单独加载到常规插件中,并且不显示在常规插件列表中。
要将此代码添加到必须使用的插件,只需创建wp-content/mu-plugins
目录(如果它还不存在)并创建一个PHP文件(可以调用任何东西),其中包含该代码。您不需要插件头或其他任何东西。
现在,当WordPress加载时,代码将在所有其他插件之前加载。由于我们的过滤器已经就位,当WordPress获取要加载的活动插件列表时,如果WP-CLI处于活动状态,您要禁用的插件将从该列表中筛选出来。