Proper Way to Modify Plugin

时间:2011-07-14 作者:Mike Wheaton

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

5 个回复
最合适的回答,由SO网友:Chip Bennett 整理而成

依我看,最好的方法要么是派生插件来维护您的更改,要么向插件开发人员提交补丁,让您的更改成为原始插件的一部分。

创建一个“子插件”真的不容易。“子主题”概念实际上适用于所使用的模板文件,而不仅仅是主题函数(事实上functions.php 加载来自父级和子级的文件,这会导致编码不正确的问题functions.php 子主题或父主题中的文件)。

SO网友:Otto

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

例如,如果一个插件有一个用动作连接到WordPress的函数,那么您只需制作另一个插件,用remove\\u动作解除该函数的连接,然后在中添加替换函数。这种方法可以让您用自己的修改版本替换插件中的单个函数,而无需修改原始插件。

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

SO网友:Chris_O

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

<?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
*/
?>

SO网友:Annika Backstrom

由于Git的分布式特性,如果插件处于Git源代码控制之下,这相对容易,但许多WordPress插件(以及官方存储库中的所有插件)都处于Subversion中。我使用vendor branches 和svn\\u load\\u dirs。php如果我真的需要修改插件,但这需要Subversion提供相当高的舒适度。

如果插件没有公开任何存储库,我建议您自己将其转换为Git存储库,并手动应用新版本。

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

SO网友:scribu

我同意Annika Backstrom\'s answer, 但我想分享我的首选解决方案。

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

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

当插件向上游更新时,我只需从svn repo中提取并合并到我的自定义分支中。

结束