如何在不编辑插件的情况下修改wordpress插件函数?

如何在不编辑插件的情况下修改wordpress插件函数?,wordpress,function,plugins,Wordpress,Function,Plugins,我正在使用wordpress,我搜索修改插件函数,而不编辑插件,以便在更新后不中断函数 但我还没有找到解决办法。你能帮我吗 提前感谢我已经多次遇到这个问题。正如其他人所说,您不能修改PHP函数。扩展类将不起作用,因为插件将实例化原始类,而不是扩展版本 最好的解决方案(已经为我工作了好几次)是向现有插件添加挂钩,然后按如下方式提交给原始作者: 如果原来的插件在github上,请分叉并克隆它。否则,将原始插件放在本地的git控件下。您可能需要稍后执行差异或回滚 创建一个名为WPML扩展(或其他)的新

我正在使用wordpress,我搜索修改插件函数,而不编辑插件,以便在更新后不中断函数

但我还没有找到解决办法。你能帮我吗


提前感谢

我已经多次遇到这个问题。正如其他人所说,您不能修改PHP函数。扩展类将不起作用,因为插件将实例化原始类,而不是扩展版本

最好的解决方案(已经为我工作了好几次)是向现有插件添加挂钩,然后按如下方式提交给原始作者:

  • 如果原来的插件在github上,请分叉并克隆它。否则,将原始插件放在本地的
    git
    控件下。您可能需要稍后执行差异或回滚
  • 创建一个名为WPML扩展(或其他)的新插件
  • 在原始插件代码中搜索要使用的操作或过滤器。如果它们已经可用并且可以做您需要的事情,那么可以通过从WPML扩展插件挂钩到它们来使用它们
  • 如果WPML插件中没有正确的钩子,请添加它们,然后按照上面的步骤操作。尝试使用最新版本的原始插件,以最大限度地提高您的更改被接受的机会
  • 如果您通过添加操作或过滤器修改了原始插件,请执行
    git diff
    保存补丁,以便以后可以重新应用。将补丁提交给最初的插件作者,希望一切顺利。如果您坚持只使用操作和过滤器,作者很可能会立即接受您的更改
  • 如果以后更新原始插件,则需要重新应用更改,直到它们被接受。您可以使用该差异文件。有一种方法可以使用
    git-rebase
    重播更新插件后所做的更改

  • 您能指定要修改的插件吗?不幸的是,大多数插件的编写方式都不允许在不修改代码的情况下覆盖它们的功能,但是如果你幸运的话,你想要编辑的插件可能会让你使用钩子和过滤器来完成。我想修改WPML插件。但是do_action()钩子并没有出现在这个插件的大多数函数中。如果它是一个类,你可以尝试扩展这个类。谢谢你的回复。我将尝试扩展WPML类。您不能覆盖PHP函数-您只能通过扩展原始类并在类中定义这些函数来覆盖类方法(属于类的函数)。扩展WPML类的问题是看您是否可以实际使用自己的类而不是WPML类(我假设他们使用自己的类进行函数回调)。查看它们是否生成一个全局变量-类似于
    $wpml=new WMPL()-如果有,请查看您是否可以访问它。如果可以,您将能够覆盖它。