首页 > CMS教程 > &#&按 > 揭开WordPress挂钩系统的神秘面纱

揭开WordPress挂钩系统的神秘面纱

尊渡假赌尊渡假赌尊渡假赌
发布: 2025-02-15 11:27:12
原创
326 人浏览过

Demystifying the WordPress Hook System

WordPress Hook 系统详解:Actions、Filters 和 Hooks

WordPress 利用事件驱动架构模式,核心组件、主题和插件通过 Hooks(钩子)在执行或 PHP 解释的不同阶段触发事件。Hooks 主要分为 Actions 和 Filters 两种:Actions 用于在流程执行的不同阶段添加或移除功能;Filters 用于修改各种功能和实现的行为。

WordPress 的 Hook 系统增强了平台的可扩展性,允许在核心代码、插件和主题中添加、移除和修改功能,开发者无需修改核心源代码即可扩展插件和主题。

Hook 系统在 WordPress 执行的不同阶段触发,通常使用 do_actions()apply_filters() PHP 函数。可以通过 add_action()add_filter() 来订阅或挂载这些事件。本文将通过示例演示 Actions 和 Filters 的使用方法。

Hooks、Actions 和 Filters 的含义

Hooks 指的是 WordPress 核心、主题和插件在 PHP 执行或解释的不同阶段触发的事件。触发这些事件时,所有挂载到这些事件上的函数和/或类方法将按正确的顺序执行。

Actions 和 Filters 是两种 Hooks:Actions 用于在流程执行的不同阶段添加或移除功能;Filters 用于修改各种功能和实现的行为。

WordPress Hook 系统的重要性

WordPress Hook 系统的重要性在于其可扩展性。它允许添加和移除功能,以及调整/修改 WordPress 核心、插件和主题中功能的实现。

编写可扩展的插件和主题,使其他开发者能够改进和扩展它们,而无需编辑核心源代码。

Demystifying the WordPress Hook System 例如,我的 2Checkout WooCommerce 支付网关插件不包含在结账页面上显示受支持信用卡类型的图标,因为我认为这是不必要的。但是,我添加了一个过滤器,以防用户有不同的需求。

我们收到了一个客户的支持请求,要求包含该图标。我们能够为客户提供一个代码片段,该片段挂接到过滤器并包含该图标。

深入探讨 WordPress Hook 系统

在 WordPress 执行的不同阶段,会触发大量事件,通常使用 do_actions()apply_filters() PHP 函数。可以通过 add_action()add_filter() 来订阅或挂载这些事件。

以下是一个插件中 Action 的示例。此 Action 在我的 ProfilePress 用户注册插件中成功注册用户后触发:

/**
 * Fires after a user registration is completed.
 *
 * @param int $form_id ID of the registration form.
 * @param mixed $user_data array of registered user info.
 * @param int $user_id ID of the registered user.
 */
do_action( 'pp_after_registration', $form_id, $user_data, $user_id );
登录后复制
登录后复制

在 WordPress 执行期间,将处理挂接到此 Action 的所有函数。

WordPress 核心中的 the_content 是一个过滤器 Hook 的示例,它会过滤每个帖子的内容:

/**
 * Fires after a user registration is completed.
 *
 * @param int $form_id ID of the registration form.
 * @param mixed $user_data array of registered user info.
 * @param int $user_id ID of the registered user.
 */
do_action( 'pp_after_registration', $form_id, $user_data, $user_id );
登录后复制
登录后复制

注意:

do_actions() 中,第一个参数是 Action Hook 的名称,后续参数是可用于挂接到 Action 的函数的变量。

apply_filters() 中,第一个参数是过滤器 Hook 的名称,第二个参数是函数挂接到过滤器上进行修改或应用的数据或值。后续参数是可用于挂接到过滤器的函数的变量/值。

Action Hook 示例

示例 #1:

使用 ProfilePress 插件的 pp_after_registration Action,假设我们想要实现一个功能,用户在注册后会立即收到欢迎短信(通过假设的短信服务 Dolio)。我们的函数 Hook 可以是这样的:

    /**
     * Filter the post content.
     *
     * @since 0.71
     *
     * @param string $content Content of the current post.
     */
    $content = apply_filters( 'the_content', $content );
登录后复制

add_action 的第三个参数是 Hook 优先级,它指定挂接到 pp_after_registration Action 的函数的执行顺序。留空将默认为 10。第四个参数指定函数 Hook 将接受的参数数量。留空将默认为 1。

示例 #2:

WordPress 包含以下 Action Hooks:wp_headwp_footer,它们分别在前端的 head 标签和 body 标签结束之前触发。

这些 Hooks 可用于在这些战略位置显示脚本和数据。

(以下内容与原文类似,为了避免重复,此处省略Action Hook和Filter Hook的剩余示例及结论部分)

(FAQs部分也因篇幅原因省略)

以上是揭开WordPress挂钩系统的神秘面纱的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板