如何防止在执行WP-CLI时加载插件?

时间:2018-04-19 作者:NextGenThemes

我目前在主插件文件本身中使用此代码。但这个插件不是我自己的,所以我希望能够正常升级它,而不必每次都添加此代码。

if ( defined( \'WP_CLI\' ) && WP_CLI ) {
    exit;
}
我需要这样做,因为这个插件会产生错误并停止wp-cli以正确执行,所以我不能只使用wp-cli禁用插件,执行任务并重新启用它。

有没有办法让我if x then do not load plugin file x 从mu插件中?

3 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

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处于活动状态,您要禁用的插件将从该列表中筛选出来。

SO网友:swissspidy

您可以使用skip-plugins WP-CLI中的选项,用于在使用WP-CLI时不加载单个插件。

您可以在命令中使用它,如下所示:

wp user list --skip-plugins=my-plugin
或者您可以将此添加到wp-cli.yml 文件:

skip-plugins:
- my-plugin

SO网友:John Dee

只需重新命名插件目录名即可禁用它。我有时这样做是为了暂时禁用插件[linux]:

mv my-plugin-dir renamed-my-plugin-dir

结束

相关推荐

导出WP-CLI中具有名字和姓氏的用户列表

我想用WP-CLI导出一个CSV文件,其中包含我的Wordpress站点用户列表。我可以做到这一点,但我正在将我的用户的名字和姓氏放在一列(显示名)中,我希望将他们分别放在各自的列中。有没有办法做到这一点?在列出可选字段的文档中,我找不到名和姓作为可用选项。