如果管理员安装了一个插件,而该插件包含在主题中,会发生什么情况?

时间:2017-06-08 作者:startToday

我将开发一个自定义主题,其中将包含一个插件。然后,对站点管理员隐藏UI。

我想知道如果激活了我的主题的网站管理员决定单独安装和使用同一个插件会发生什么?一切都会好起来的?这会导致任何冲突或问题吗?

2 个回复
最合适的回答,由SO网友:Dave Romsey 整理而成

我将开发一个自定义主题,其中将包含一个插件。

请,don\'t 在主题中包含插件。

相反,我建议使用TGM Plugin Activation 或者其他一些机制来要求或推荐主题插件(TGM也适用于插件)。

将您的主题与任何必需或建议的插件分离,将允许独立地更新所有内容,这对于了解安全问题至关重要。

有一个huge security situation not too long ago 部分原因是主题绑定了一个有漏洞的滑块插件。尽管该插件的作者修补了该漏洞,但该问题仍然存在于许多网站上,因为该插件包含在主题中,因此没有更新。这让每个人都很头疼——插件开发人员、最终用户、网站访问者和你(主题开发人员)。

此外,如果您想隐藏这些插件的UI,我建议只对非管理员角色这样做。这种东西可以通过你的主题或你自己的自定义插件来处理。

SO网友:WebElaine

我看到一些主题采用了“推荐插件”的方法,这样更安全。不要在主题中包含插件。相反,检查某些功能所需的特定于插件的功能-例如,如果您正在谈论ACF,您可以使用:

if(function_exists(\'have_rows\')) {
    // Enable fancy theme feature
} else {
    // Tell site admin to install plugin if they want to enable fancy feature
}
这在多个方面为您提供了自由:

无需每次更新插件时都更新主题特别是如果所讨论的插件提供了付费的高级版本,你不应该将其直接绑定到你的主题中。

Exception:

如果您试图包含一个非常小的插件,比如总共100行代码,那么将其包含在主题中是安全的。为了防止在站点也安装了插件时发生冲突,请为所有函数添加前缀,这样您就不会调用插件调用的任何东西。这样,插件和主题的功能都可以工作。

结束

相关推荐