不幸的是,这完全取决于插件(或者更准确地说,取决于插件作者!)如果作者积极思考,并以这种方式创建插件以使其具有可扩展性,那么可以创建自己的插件来添加现有插件中的功能。
注意Toscho所指出的-你的插件顺序很重要(链接再次是here).
Hooks
使插件可扩展的最常见方法是添加钩子(操作和过滤器钩子),然后您可以利用自己的插件。如果你有一个好的代码编辑器(现在我正在
NetBeans) 您应该在插件源文件中搜索:
do_action
和
apply_filters
. 如果插件作者提供了这些挂钩,那么这是一种非常方便和简单的方法,可以帮助您超越默认设置,或者注入您自己的代码。
Pluggable Functions
如果插件作者很精明,但是使用全局名称空间来实现插件功能,那么他/她可能已经将插件的功能包装在
if ( function_exists() )
条件语句。为了让这对您有利,您必须确保首先加载插件(这可能是一个挑战)。您所要做的就是在完全相同的名称空间中使用完全相同的名称声明您的函数,然后您的函数将替换插件使用的函数。
Extension
如果插件作者是一个很好的OOP程序员,他/她可能会以一种足够细粒度的方式编写插件代码,以便于扩展(因为,正如GOF所说,插件代码肯定是可以修改的)。在plugin类中寻找很多粒度——也就是说执行小型、高度特定任务的方法——这些粒度可以在扩展plugin类的类中重写。当然,正如Toscho提到的,类的架构需要确保它可以被重写,并且它的默认实现不会完全调用自己。
Fork or Patch
如果插件作者正在使用
gitHub, 或者以其他方式打开了源代码,您可以向作者提交一个补丁并进行修改(最好是修改插件,使其更加灵活或强大,而无需删除或更改现有特性或功能),或者只需下载源代码,修改插件标题,使其在原作者推出更新时不再更新,最好将更新后的版本提交给作者或作为其自己的实体
directly to WordPress. 请注意,如果您将插件提交给WP,您需要为其创建一个站点,并且应该准备好在其他人下载时支持它。