#1 楼
恕我直言,最好的方法是派生插件来维护您的更改,或者将补丁提交给插件开发人员,以使您的更改成为原始插件的一部分。创建“子插件” “真的不容易。 “子主题”概念的确适用于所使用的模板文件,而不是主题功能(实际上,从父子目录中加载的
functions.php
文件也是如此,这确实会导致子文件中的functions.php
文件编码不正确的问题)或父主题)。评论
我所做的更改类型是特定于站点的,因此我认为不适合进行分叉或提交补丁。对于插件的更一般的改进,我一定会牢记在心。
–麦克·惠顿(Mike Wheaton)
2011年7月14日在12:57
但是分叉基本上就是您已经在做的事情。基本上,这些是您的选择:fork或patch。 @Chris_O提供了一种很好的方法,能够从上游提取自动更新,同时维护您的分叉插件。
–芯片Bennett
11年7月14日在13:08
#2 楼
“正确”的方式显然取决于插件。有些插件比其他插件更容易编辑,但是大多数插件实际上可以被其他插件修改。例如,如果某个插件的某个功能通过动作与WordPress挂钩,那么这很简单您要制作另一个使用remove_action取消该功能的插件,然后在其中添加替换功能。这种方法可以让您用自己的修改版本替换插件中的各个功能,而无需修改原始插件。
相同的概念显然适用于过滤器。
#3 楼
最好的方法是克隆它,然后更改标题中的插件名称,然后更改目录名称。这样,您还可以安装原始版本但未激活,因此在发布更新时仍会收到警报。<?php
/*
Plugin Name: Name Of The Plugin
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the Plugin.
Version: The Plugin's Version Number, e.g.: 1.0
Author: Name Of The Plugin Author
Author URI: http://URI_Of_The_Plugin_Author
License: A "Slug" license name e.g. GPL2
*/
?>
评论
这仍然需要浏览插件的新版本以查找更改(我想使用版本比较工具会有所帮助),然后将这些更改复制到我的自定义插件中。我想我可以下载插件,然后使用SVN将更改与我的自定义版本合并。
–麦克·惠顿(Mike Wheaton)
2011年7月14日在12:42
在插件页面上的开发日志链接上有直接链接到diff文件的链接。例如,这里是从W3 Total Cache生成的差异
– Chris_O
2011年7月14日在12:49
#4 楼
如果由于Git的分布式特性而使该插件处于Git源代码控制之下,则这相对容易,但是许多WordPress插件(以及所有官方存储库中的插件)都位于Subversion中。如果确实需要修改插件,则使用供应商分支和svn_load_dirs.php,但这需要Subversion具有相当高的舒适度。自己创建一个Git存储库并手动应用新版本。最后,版本控制系统是将更改重新应用到新上游版本的唯一明智的方法。
#5 楼
我同意Annika Backstrom的回答,但我想分享我的首选解决方案。由于大多数插件都在svn下,所以我使用了一个名为git-svn的工具来制作git镜像。 >
然后,我只创建一个分支并在此提交更改。
当插件在上游更新时,我只是从svn存储库中提取并合并到我的自定义分支中。
评论
选中“扩展而不修改”。我认为这是实际上更好的解决方案。检查此链接以获取详细信息-自定义WordPress插件的正确方法