Integrating plugins in themes

时间:2011-04-08 作者:OleVik

我找不到讨论这个的帖子,所以开始这篇。

我目前正在为3.1+开发一个相当复杂的主题,我的意思是,除了样式和常规的前端功能之外,我还在主题的核心包括后端和前端的插件。因此,为了使这一点更有条理,我将其分为三个问题:

集成插件是一种常见的做法吗

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

1) Is integrating plugins a common practice?

不是真的。通常,您会得到一个提供基本功能的主题。然后,您只能使用用于特殊用途的插件来扩展主题,如推特内容、活动日历等。

在我看来,这是有道理的。我目前正在开发一个非常瘦的主题,它有一些插件(OOP方法),可以作为插件交付,但没有捆绑。这些插件为分页、面包屑等提供模板标记。。。即使是带有post格式的循环。我喜欢只在用户真正需要时才提供功能的想法。例如,如果你使用WP作为商业主页的CMS,那么很少需要评论系统,那么为什么主题要提供这个呢?这种方法的另一个优点是:如果不需要,只需禁用插件,并用自定义内容交换模板标记即可。

这种方法的重要之处在于:不要直接放置那些模板标记。使用挂钩(&A);过滤器包装在函数中,因此如果禁用插件,主题不会因为未定义的函数调用而崩溃。

2) What are the implications/complications in regards to auto-updating the theme/plugins?

这是我目前正在质疑自己的事情。我考虑了一个大规模的例行程序来检查主题和插件的更新,但总的来说:这毫无意义。在我看来,如果您只使用内置更新系统(或者如果您没有在官方repo上托管,则使用一些自定义类),那就更好了。原因:您只更新真正需要更新的内容。这节省了一些时间和精力,所以我甚至称之为“更环保”的方式。

(3)What would be the most optimized way of including each plugin without breaking pre-existing functionality?

在您的案例中,预先存在的功能究竟是什么?

WordPress的函数名大约有2500个函数可以根据请求读取。所以质疑if ( function_exists(\'whatever\') ) 从来都不是个好主意。最好使用唯一的名称@简·法布里有一个好主意:他在这里为所有的答案函数加上前缀wpse 和Q的编号-示例:wpse14277_function_name(). 4位或5位数字加上字母可能会保持唯一性。假设您在主题中有50个自定义函数,并针对每个请求询问它们2.500个(您可以自己计算)-这是不可行的
Edit:
如果您只想知道某个插件是否处于活动状态,请使用is_plugin_active() 条件标记。

SO网友:Drew Gourley

是的,任何你构建到函数中的东西。从技术上讲,php可以重新设计成插件并进行分发,反之亦然如果您发现您的功能。php变得有点臃肿和混乱,您可以创建更多。主题中的php文件来帮助组织内容,然后在函数中调用这些文件。php via include\\u once(\'path/filename.php\')。

SO网友:Rarst

需要明确的是,您是否在谈论将已经作为独立的全功能插件存在的代码包括在内?

集成插件是一种常见的做法吗?

在主题中集成代码是常见的做法。然而,捆绑过多的代码和功能(通常通过普通插件实现)被一些人视为功能膨胀,试图将用户锁定在您的主题中。

自动更新主题/插件有什么影响/复杂之处?

更新会用新版本覆盖所有内容。

在不破坏现有功能的情况下,包含每个插件的最佳方式是什么?

这在很大程度上取决于插件的具体功能,它是如何编码的,以及主题是否需要它才能正常工作,或者仅仅是额外的功能。

结束

相关推荐

How do you debug plugins?

我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?