如何像主题一样扩展插件?

时间:2020-06-07 作者:Iftikhar uddin

在里面WordPress 我们可以通过创建child theme. 我们如何从父插件创建子插件?

我搜索了很多,有人建议使用操作和挂钩,但如果插件没有提供挂钩和操作怎么办?

实际上我想扩展LearnDash插件。我想在我的子插件中扩展它的功能。所以,如果插件中有任何更新,它不应该与我们的自定义更改冲突。但目前我不知道如何扩展它?

2 个回复
最合适的回答,由SO网友:Jacob Peattie 整理而成

除了挂钩之外,没有标准方法,只有原始插件的开发人员才能添加和支持挂钩。如果插件是可扩展的,他们将有开发人员文档(LearnDash可用here). 具体细节将完全取决于插件以及他们如何选择允许它。

SO网友:Tom J Nowell

No, you cannot. There is no such thing as child plugins. You need to use hooks/filters.

子插件

在WordPress中,我们可以通过创建子主题轻松扩展父主题。我们如何从父插件创建子插件?

Extend是a。。慷慨的条件。子主题允许您覆盖父主题的模板,并加载它们的functions.php, 但这不是一种任意的文件替换机制。仔细看,您将在中看到该代码functions.php 并通过加载includerequire 不能通过子主题系统重写。这些文件与插件的情况相同。

简单地说,there is no such thing as a child plugin. 这个概念在技术层面上毫无意义。

如果没有钩子呢

我搜索了很多内容,人们建议使用操作和挂钩,但如果插件没有提供挂钩和操作怎么办?

然后您有3个选项:

分叉插件并添加它们,让作者添加它们并更新插件,接受插件中没有挂钩和过滤器的事实,扩展LearnDash,实际上我想扩展LearnDash插件。

那么您应该联系LearnDash支持,WPSE不支持第三方插件。

我想在我的子插件中扩展它的功能。

您可以创建第二个插件,通过使用挂钩和过滤器来修改LearnDash的行为,但它不是子插件,而是一个插件。

记住,插件只是PHP代码文件,它们不是沙盒或分离的。当代码被加载时,它就被加载了。这意味着所有的东西都同时在一起,没有分离,一旦加载,从哪里加载是不相关的。

这就是为什么如果您手动从functions.php, 或者为什么大多数主题functions.php 如果将其移动到插件,则加载。

处理更新,这样如果插件中有任何更新,它就不会与我们的自定义更改冲突。但目前我不知道如何扩展它?

然后您的更改将被覆盖。就像我拿着你的;汤姆回忆录v1“;用v2替换它,当你打开新书时,你的笔记和涂鸦就会消失。

总之,因此:

您可以派生插件,确保对其进行重命名,但您必须手动集成将来的所有更新。巨大的日常维护成本(或者如果您愿意留下,请留下巨大的持续安全漏洞)

  • 请LearnDash添加过滤器和挂钩(他们可能会说不)
    • 如果learn dash不能或不愿意,那么tough. 您已经走到了尽头,请使用竞争对手或替代品。没有父插件或子插件是不可无限扩展的,有些插件在不同方面优于其他插件

  • 相关推荐