问题描述

我喜欢创建子插件

说明: –

我有一个名为 X 的父插件。这将独立工作 (像其他现有的插件) 。

现在我决定为该插件 X 添加一些额外的功能 (将其视为升级版本) 。所以我想通过另一个插件 Y 创建额外的功能,这将取决于 (并从中继承)X. 这个插件 Y 不能使用插件 X 。

我该怎么做?

最佳解决方案

最好的方法是让你的 X 插件用自己的钩子做动作和过滤器,所以新的插件 (在你的情况下 Y) 可以与插件 X 的功能和数据进行交互。定义你自己的钩子是相当简单和简单的。

行动钩

从抄本:

Actions are the hooks that the WordPress core launches at specific points during execution, or when specific events occur. Your plugin can specify that one or more of its PHP functions are executed at these points, using the Action API.

一个新的动作钩子的例子:

Function whatever(){
   //regular stuff you do normally 
  do_action('Name-Of-Your-Action-hook', $args1,$args2)
  //regular stuff you do normally
}

现在我们可以与该函数进行交互,并使用它的参数 ($ args1,$ args2) 使用’Name-Of-Your_hook’ 钩子

add_action('Name-Of-Your-Action-hook','hook_function_callback');

过滤钩

从抄本:

Filters are the hooks that WordPress launches to modify text of various types before adding it to the database or sending it to the browser screen. Your plugin can specify that one or more of its PHP functions is executed to modify specific types of text at these times, using the Filter API.

一个新的过滤器钩子的例子:

Function whatever(){
   //regular stuff you do normally 
   $output = apply_filters('Name-Of-Your-Filter-hook', $output,$args1,$args2)
  //regular stuff you do normally
}

现在我们可以与该函数交互,使用’Name-Of-Your-Filter-hook’ 钩子过滤 $ output use 及其参数 ($ args1,$ args2)

add_filter('Name-Of-Your_hook','hook_function_callback');

一个很好的例子是 contact form 7

  • 联系表格 7 – 活动监视器插件

  • 联系表格 7 动态文本扩展

  • 联系表格 7 日历

  • 联系表格 7 Textarea Wordcount

  • 联系表格 7 Customfield 邮寄

  • 联系表格 7 到数据库扩展

而且更多的是所有 (大多数) 是基于其钩子来扩展 Contact Form 7 的功能的插件。

次佳解决方案

在您的父插件中添加一些钩子,子插件可以附加自己的功能。如果是 if(function_exists('parent-plugin-function'))class_exists,则将子插件也包装起来。

参考文献

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