问题描述

我正在研究一个插件,当用户通过不同的插件执行某些操作时,理想情况下可以做到这一点。

我可以在这些插件中添加自定义钩子,但是当我想要分发我的插件时,显然这不太适用。有没有一个很好的方法来添加钩子给别人的插件从我自己的插件?是唯一真正的解决方案,要求作者包括自定义钩子,以便其他开发人员可以建立他们的工作?

示例:当有人转发文章时,我想在我的插件中做一些事情。如果有一个自定义的钩子,无论什么流行的转发插件,我可以挂钩和消除,这将是伟大的。没有,所以我可以修改他们的插件来包含它,但这只适用于我的副本,我不想尝试重新分配。

我们只需要尝试和更好的插件开发人员,以便我们可以一起玩好吗?

最佳解决方案

@Ryan Elkins:

我想这个答案取决于每个 use-case 是如何导入的。在某些情况下,您将需要 quick-and-dirty,在其他情况下,它可能是更重要的 use-case 。以下是两件事:

在 WordPress 核心中查找替代挂钩

如果有些时候有些东西很脏,有些时候你可以使用核心的其他下游挂钩来修改你需要的内容,或者通过使用 ob_start() /ob_end_clean()(参见 @Todd Perkins answer 到 “Dealing with large HTML output via plugin code”) 代码示例来修改上游和下游的钩子。)

为了追踪你可以使用的挂钩,请查看我昨天发布的 Instrument Hooks plugin,以帮助您找到可以使用的挂钩。

将您希望的挂钩提交到插件开发人员

如果您的 use-case 对您或社区更重要,我建议您继续添加插件所需的挂钩。然后测试很好,以确保它真正解决您的 use-case 之后,您可以提交一个补丁到插件开发人员,希望他或她将应用它。这样,您可以通过给他们测试代码尽可能简单,并且自己通过 use-case 进行工作,以确保它真正符合您的需要。我不能告诉你,我认为我需要一个特定的钩子才能找到,试图实现一个我需要一个钩子,但是一个不同于我第一次设想的频率。

如果你不熟悉在这里创建一个补丁是一个很好的文章,修补 WordPress 核心,其中大多数适用于修补插件,对于那些不希望显而易见的做什么:

希望这可以帮助?

附:有一件事我觉得有点失望,你的问题的地址是仅为 end-users 设计的插件的百分比,即没有自己的钩子。想象一下,如果 WordPress 是像大多数插件一样设计?这将是不灵活和非常利基的解决方案。

如果 WordPress 有能力使用其他插件所依赖的 auto-install 插件,也可能会有所不同因为我通常必须从头开始写出很多我需要的功能,因为客户端需要某种方式和可用的插件,而 90%的用户不允许我更新剩余的 10%的灵活性。

我真的希望那些领导 WordPress 社区的人能够确定一种方法,以确保插件能够获得最佳实践奖励 (例如为其他开发者添加钩子),就像在 StackExchange 网站上获得的好回答一样。

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。