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

评论

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

#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存储库中提取并合并到我的自定义分支中。