如何将自定义挂钩添加到 Woocommerce 的自定义插件

Posted

技术标签:

【中文标题】如何将自定义挂钩添加到 Woocommerce 的自定义插件【英文标题】:How to add custom hooks to a custom plugin for Woocommerce 【发布时间】:2018-11-30 20:33:00 【问题描述】:

我们已经为 Woocommerce 支付集成开发了一个自定义插件,我们需要在我们的插件文件中添加 woocommerce 钩子,不要将其包含在主题文件夹的function.php中。

我们如何将自定义挂钩添加到我们可以从 function.php 文件调用的插件中?有什么解决方法吗?(当我们在 wordpress 主题的 function.php 文件中添加自定义 woocommerce 钩子和操作代码时,代码可以正常工作,但我们需要在自定义插件文件中使用它。)

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

有两种钩子:动作钩子和过滤器钩子。

动作钩子就像某些代码中的一扇门或一扇门,允许您在特定代码位置运行一些自定义代码。当处理该门或大门的代码运行时,它将被执行或“触发”。 所以它是基于事件的。

过滤钩子与动作钩子有点不同。它们不用于触发某些自定义代码(不是基于事件的)。它们允许更改或操作一些现有的代码值,如字符串、数组、对象……所以过滤器钩子总是以最小的一个参数被操作,并且将总是返回那个被操作的参数.


在插件中创建自定义钩子:

1) 对于动作挂钩: do_action() Wordpress 函数

do_action('woocommerce_my_custom_action', $some_variable, $another_variable );

2) 对于过滤器挂钩: apply_filters() Wordpress 函数(其中 $value 是被操纵的参数)

$value = apply_filters('woocommerce_my_custom_action', $value, $some_variable, $another_variable );

互联网上有很多关于钩子的文档、教程和资源

Wordpress filter Vs. action

what is difference between action hook and filter hook in wordpress?

Wordpress Coding a custom action hook

【讨论】:

【参考方案2】:

你的插件应该在它自己的 php 文件中有它自己的函数,听起来你好像是在将代码粘贴到主题的 function.php 文件中?并且在主题更新时被覆盖?这是你在做的吗?

请阅读 wordpress 插件开发文档。 https://developer.wordpress.org/plugins/intro/

如果您的插件需要其他插件,有几种方法可以让用户首先激活其他插件: https://wordpress.stackexchange.com/questions/127818/how-to-make-a-plugin-require-another-plugin

【讨论】:

以上是关于如何将自定义挂钩添加到 Woocommerce 的自定义插件的主要内容,如果未能解决你的问题,请参考以下文章

WooCommerce:将自定义 Metabox 添加到管理订单页面

将自定义“预订”按钮添加到 WooCommerce 产品单页

php 将自定义字段添加到WooCommerce产品#woocommerce #custom-fields

php 将自定义字段添加到WooCommerce产品变体

markdown 将自定义字段添加到Woocommerce变体中

将自定义批量操作添加到 Woocommerce 3 中的管理订单列表