什么是 WordPress 钩子? 操作和过滤器如何帮助扩展功能?
已发表: 2018-06-13
最后更新 - 2020 年 10 月 9 日
如果您曾经使用过 WordPress,那么您一定多次遇到过“ Hook ”这个词。 如果您是想要构建插件和主题的 WordPress 开发人员,那么 WordPress 挂钩对您的开发至关重要。
但是 Hooks 到底是什么?
根据 WordPress.org codex,“ WordPress 提供了挂钩,允许您的插件“挂钩”到 WordPress 的其余部分; 也就是说,在特定时间调用插件中的函数,从而启动插件。”
笼统地说,钩子将一件事与另一件事联系起来。 在 WordPress 术语中,它将用户定义的代码与 WordPress 核心的现有代码挂钩(连接)。
让我们直说吧。
WordPress 是使用一些默认功能构建的。 它具有与之关联的默认行为和值。 使用钩子,您可以修改这些默认行为并替换现有值,从而根据您的需要自定义 WordPress 环境。
钩子的类型
Hooks 有两种类型:
- Action Hooks – 用于在执行的某个时刻执行,改变默认的执行流程。 这是 WordPress 操作挂钩的列表。
- Filter Hooks – 与 Action hooks 略有不同,Filter hooks 用于修改默认的 WordPress 数据并将其替换为自定义值,然后在前端显示给用户或存储在数据库中。 可以在 WordPress Codex 中找到过滤器挂钩列表。
基本上,钩子本身就是预定义的函数。 因此,与钩子相关的两种类型的函数是:
- 动作函数——这些函数在博客发布、页面加载等事件中很有帮助。
以下是一些动作函数:- add_action()
- did_action()
- 做动作()
- 做动作()
- do_action_ref_array()
- has_action()
- 删除动作()
- remove_all_actions()
- 过滤器函数——每个过滤器函数都会返回一些值并将其替换为默认的 WordPress 数据。
过滤器功能包括:- 添加过滤器()
- 应用过滤器()
- apply_filters_ref_array()
- current_filter()
- 做过滤器()
- has_filter()
- remove_all_filters()
- 删除过滤器()
信息图
请查看以下信息图,以更好地了解挂钩的工作原理。

如上图所示,Action 和 Filter 函数利用各自的钩子来修改 WordPress 的核心代码。
Hook 长什么样子?
一个典型的动作钩子采用以下形式:
add_action ('hook', 'your_custom_function_name', [priority], [accepted_parameters]); 函数 your_custom_function_name() { //你的自定义代码 }
其中hook是钩子的名称, your_custom_function_name是带有您的自定义代码的函数的名称,可选的优先级参数指示应该如何执行钩子,接受的参数指示附加参数,以及自定义代码。 这 函数调用 ( add_action())可以位于代码片段的下方或上方。
过滤器挂钩具有以下形式:
add_filter('filter', 'your_custom_function_name', 'priority', 'accepted_args' ); 函数 your_custom_function_name($variable) { //你的自定义代码 返回; }
其中add_filter()是一个 Filter钩子函数中, filter是你要使用的过滤器的名字, your_custom_function_name是你自定义函数的名字, priority参数表示钩子的执行顺序, accepted_args表示要传递的参数,custom具有强制返回值的代码。

就像 WordPress 一样,WooCommerce 也有可用的钩子。 这些钩子广泛用于开发插件、主题和自定义 WooCommerce Checkout 流程。
阅读 WooCommerce 文档中的 WooCommerce 钩子:操作和过滤器,以详细了解 WooCommerce 钩子。
示范
让我们使用一些示例代码片段来理解钩子。
动作钩子和函数
//添加一个动作钩子 功能 my_action_hook() { echo "<p align='center'>这是一个动作挂钩示例</p>"; } add_action('get_header', 'my_action_hook');
在上面的代码片段中,'my_action_hook' 是自定义函数的名称,'add_action' 是 Action 函数之一,'get_header' 用于自定义模板头。 在给定的代码片段中,我们在网站的标题部分显示文本“This is an Action Hook Demo”。
显示应用的代码片段更改的示例屏幕截图如下所示。

过滤器钩子和功能
//添加过滤钩子 add_filter('woocommerce_get_price_html','my_filter_hook'); 功能 my_filter_hook($price){ return 'For just '.$price; }
在上面的代码片段中,“woocommerce_get_price_html”是获取产品价格的 WooCommerce 钩子,“my_filter_hook”是用户定义的过滤器的名称,“$price”是用户定义的变量。 代码片段只是将前缀“For just”添加到产品价格中。
以下屏幕截图显示了代码片段如何影响我们的 WooCommerce 商店。

这只是一个简单的例子,你可以用 Hooks 实现很多事情。
操作和过滤器如何帮助扩展功能?
- 使用 Hooks 的主要优点是它有助于自定义核心 WordPress 代码。
- 可以仔细监控开发中的任何更改,因为修改只是最小的,而不是在代码中的多次修改。
- 使用尝试和测试方法,新插件开发变得更加容易。
- 对于主题开发,可以创建子主题并在不影响父主题的情况下使用钩子。
- 它是简单易用的 WordPress 产品,具有易于理解的结构和详细的文档供任何参考。
- 支持最流行的 WordPress 电子商务插件 WooCommerce。 WooCommerce 定价插件广泛地改变产品价格、价格计算,并使用 WooCommerce 挂钩提供动态定价和折扣。 订单详细信息、产品信息、运输详细信息可以使用自定义挂钩进行点击。
结论意见
WordPress Hooks 是插件和主题开发的关键机制。 它们被广泛用于修改现有的 WordPress 代码以自定义网站。 虽然钩子有许多优点,但应确保每个自定义钩子都是唯一的,并且不会与另一个同名钩子重叠。 即使在这种情况下,您也可以根据需要为钩子分配优先级以执行。
查看我们的WooCommerce 自定义文章,了解有关自定义 WooCommerce 商店的提示。
或者继续探索 LearnWoo以获得更多精彩文章。