禁用特定主题的活动插件

时间:2016-05-02 作者:Bhuvnesh Gupta

我想禁用特定主题的一些插件。我正在使用deactivate_plugins 钩住以停用。下面是我的代码。

add_action(\'wp_head\',\'disable_plugins\');
function disable_plugins(){
    include_once(ABSPATH.\'wp-admin/includes/plugin.php\');
    $current_theme = wp_get_theme();
    $current_theme_name = $current_theme->Name;

    if($current_theme_name == \'Twenty Sixteen\'){
        if ( is_plugin_active(\'press-release/init.php\') ) {
            deactivate_plugins(\'press-release/init.php\');    
        }
    }
}
这段代码在wp\\u head hook停用插件,但问题是我希望只有在主题为Twenty Sixteen 而想保持启用或禁用,因为它已经在其他主题上。

但我的代码停用了所有主题的插件:(

另一个解决方案是取消注册每个插件的css和js文件,但很难找到所有插件的所有css和js文件,它还将取消注册所有主题,而我希望活动插件在特定主题上禁用。

在这种情况下,如果你能的话,请帮助我。谢谢

1 个回复
SO网友:cjbj

@Sumit在评论中所说的(你自己也发现了)是正确的。如果你deactivate a plugin 在主题中,它将被永久停用,直到再次激活。

此外,如果您将停用操作附加到wp_head 它在每次页面加载时执行,这是不必要的。您需要做的是在主题被激活时停用插件,并在另一个主题被激活时重新激活插件。有以下操作挂钩:after_switch_theme 激活时和switch_theme 停用时。因此,您可以:

add_action(\'after_switch_theme\',\'disable_plugins\');
add_action(\'switch_theme\',\'enable_plugins\');
您已经拥有disable_plugins 函数,另一个您需要自己编写的函数。

相关推荐

如何使用api.wordpress.org从wordpress.org/Themes中获取主题信息?

我正试图从WordPress中获取一些主题描述的html代码,我知道这在codecanyon中是可以实现的,但在WordPress中却无法实现。org,我已经阅读了api。wordpress。组织主题和插件部分的文档https://codex.wordpress.org/WordPress.org_API 并且能够通过插件实现这一点https://api.wordpress.org/plugins/info/1.0/{slug}.json, 但主题并不那么明确。有人能帮帮我吗?