修改插件的正确方法


15

修改插件的最佳方法是什么?我经常想对大型插件中的一两个功能进行小的更改。这很容易做到,但是我必须使用注释来标记我的更改,并在更新后再次修改插件。理想情况下,我想不理会插件,而在其他地方进行更改,就像我们处理主题和子主题一样。我可以制作一个需要父插件并将其覆盖的插件吗?


1
选中“扩展而不修改”。我认为这是实际上更好的解决方案。检查此链接以获取详细信息- 自定义WordPress插件的正确方法
Eugine Joseph

Answers:


7

恕我直言,最好的方法是派生插件来维护您的更改,或者将补丁提交给插件开发人员,以使您的更改成为原始插件的一部分。

创建“儿童插件”确实不容易。“子主题”概念的确适用于所使用的模板文件,而不是“主题”功能(实际上,“ functions.php父主题”和“子主题”中的文件均已加载,这确实会导致“子主题” functions.php或“父主题”中编码错误的文件出现问题)主题)。


我所做的更改类型是特定于站点的,因此我认为不适合进行分叉或提交补丁。对于插件的更一般的改进,我一定会牢记在心。
迈克·惠顿

但是分叉基本上是您已经在做的。基本上,这些是您的选择:fork或patch。@Chris_O提供了一种很好的方法,可以从上游提取自动更新,同时维护您的分叉插件。
Chip Bennett

7

“正确”的方式显然取决于插件。有些插件比其他插件更容易编辑,但是大多数插件实际上可以被其他插件修改。

例如,如果某个插件具有与动作关联的功能,那么制作另一个插件即可通过remove_action取消该功能,然后添加替换功能就很简单了。这种方法可以让您用自己的修改版本替换插件中的各个功能,而无需修改原始插件。

显然,相同的概念适用于过滤器。


4

最好的方法是克隆它,然后更改标题中的插件名称,然后更改目录名称。这样,您还可以安装原始版本但未激活它,因此在发布更新时仍会收到警报。

<?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将更改与我的自定义版本合并。
迈克·惠顿

2
在插件页面上的开发日志链接上有直接链接到diff文件的链接。例如,这里是从W3 Total Cache
Chris_O 2011年

3

如果由于Git的分布式特性而使该插件处于Git源代码控制之下,则这相对容易,但是许多WordPress插件(以及所有官方存储库中的插件)都位于Subversion中。如果确实需要修改插件,则使用供应商分支和svn_load_dirs.php ,但这需要Subversion具有相当高的舒适度。

如果该插件未公开任何存储库,建议您自己将其转换为Git存储库,然后手动应用新版本。

最后,版本控制系统是将更改重新应用到新的上游版本的唯一明智的方法。


3

我同意Annika Backstrom的回答,但我想分享我的首选解决方案。

由于大多数插件都在svn下,因此我使用了一个名为git-svn的工具来制作git镜像。

然后,我只创建一个分支并在那里提交更改。

当插件在上游更新时,我只是从svn存储库中提取并合并到我的自定义分支中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.