问题描述

我正在建立一个 (潜在的) 大型多站点网络,我希望在需要时添加和配置站点,使其尽可能容易。我目前处于处理插件的阶段。

使用多站点我知道几种不同的方法可以激活插件

  • 将插件放在/plugins 中,在每一个网站上激活它

  • 将插件放在/plugins 中,使用’network activate’ 在所有网站上激活

  • 将插件放在/mu-plugins 中,在每个站点自动激活

现在,我一直在玩这些设置,我想在所有网站上激活 Akismet,但是一两个。我以为我可以网络激活插件,然后禁用它在一个单一的网站,但我无法这样做 – 如果我使用网络激活,那么只有’network deactivate’ 的选项 – 这将停用所有网站的插件。

有没有办法使网络的方便功能激活,但仍然有方便能够在 site-by-site 基础上停用插件?

最佳解决方案

您可以使用过滤器 site_option_*

例如。以下将在 id 为 2 的博客上禁用 akismet 。

add_filter('site_option_active_sitewide_plugins', 'modify_sitewide_plugins');

function modify_sitewide_plugins($value) {
    global $current_blog;

    if( $current_blog->blog_id == 2 ) {
        unset($value['akismet/akismet.php']);
    }

    return $value;
}

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。