什么是 WordPress 钩子? 操作和过滤器如何帮助扩展功能?

已发表: 2018-06-13
WordPress Hooks | LearnWoo

最后更新 - 2020 年 10 月 9 日

如果您曾经使用过 WordPress,那么您一定多次遇到过“ Hook ”这个词。 如果您是想要构建插件和主题的 WordPress 开发人员,那么 WordPress 挂钩对您的开发至关重要。

但是 Hooks 到底是什么?

根据 WordPress.org codex,“ WordPress 提供了挂钩,允许您的插件“挂钩”到 WordPress 的其余部分; 也就是说,在特定时间调用插件中的函数,从而启动插件。”

笼统地说,钩子将一件事与另一件事联系起来。 在 WordPress 术语中,它将用户定义的代码与 WordPress 核心的现有代码挂钩(连接)。

让我们直说吧。

WordPress 是使用一些默认功能构建的。 它具有与之关联的默认行为和值。 使用钩子,您可以修改这些默认行为并替换现有值,从而根据您的需要自定义 WordPress 环境。

钩子的类型

Hooks 有两种类型:

  1. Action Hooks – 用于在执行的某个时刻执行,改变默认的执行流程。 这是 WordPress 操作挂钩的列表。
  2. Filter Hooks – 与 Action hooks 略有不同,Filter hooks 用于修改默认的 WordPress 数据并将其替换为自定义值,然后在前端显示给用户或存储在数据库中。 可以在 WordPress Codex 中找到过滤器挂钩列表。

基本上,钩子本身就是预定义的函数。 因此,与钩子相关的两种类型的函数是:

  1. 动作函数——这些函数在博客发布、页面加载等事件中很有帮助。
    以下是一些动作函数:

    • add_action()
    • did_action()
    • 做动作()
    • 做动作()
    • do_action_ref_array()
    • has_action()
    • 删除动作()
    • remove_all_actions()
  2. 过滤器函数——每个过滤器函数都会返回一些值并将其替换为默认的 WordPress 数据。
    过滤器功能包括:

    • 添加过滤器()
    • 应用过滤器()
    • apply_filters_ref_array()
    • current_filter()
    • 做过滤器()
    • has_filter()
    • remove_all_filters()
    • 删除过滤器()

信息图

请查看以下信息图,以更好地了解挂钩的工作原理。

WordPress Hooks | Info-graphic on how WordPress Hooks work
有关 WordPress Hooks 如何工作的信息图

如上图所示,Action 和 Filter 函数利用各自的钩子来修改 WordPress 的核心代码。

Hook 长什么样子?

一个典型的动作钩子采用以下形式:

 add_action ('hook', 'your_custom_function_name', [priority], [accepted_pa​​rameters]);
函数 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”。

显示应用的代码片段更改的示例屏幕截图如下所示。

WordPress Hooks | Action hook example
动作挂钩示例

过滤器钩子和功能

//添加过滤钩子
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 商店。

WordPress Hooks | Filter hook example
过滤器挂钩示例

这只是一个简单的例子,你可以用 Hooks 实现很多事情。

操作和过滤器如何帮助扩展功能?

  1. 使用 Hooks 的主要优点是它有助于自定义核心 WordPress 代码。
  2. 可以仔细监控开发中的任何更改,因为修改只是最小的,而不是在代码中的多次修改。
  3. 使用尝试和测试方法,新插件开发变得更加容易。
  4. 对于主题开发,可以创建子主题并在不影响父主题的情况下使用钩子。
  5. 它是简单易用的 WordPress 产品,具有易于理解的结构和详细的文档供任何参考。
  6. 支持最流行的 WordPress 电子商务插件 WooCommerce。 WooCommerce 定价插件广泛地改变产品价格、价格计算,并使用 WooCommerce 挂钩提供动态定价和折扣。 订单详细信息、产品信息、运输详细信息可以使用自定义挂钩进行点击。

结论意见

WordPress Hooks 是插件和主题开发的关键机制。 它们被广泛用于修改现有的 WordPress 代码以自定义网站。 虽然钩子有许多优点,但应确保每个自定义钩子都是唯一的,并且不会与另一个同名钩子重叠。 即使在这种情况下,您也可以根据需要为钩子分配优先级以执行。

查看我们的WooCommerce 自定义文章,了解有关自定义 WooCommerce 商店的提示。

或者继续探索 LearnWoo以获得更多精彩文章。