如何将自定义挂钩添加到 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