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 核心、插件和主题中功能的实现。
编写可扩展的插件和主题,使其他开发者能够改进和扩展它们,而无需编辑核心源代码。
例如,我的 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_head
和 wp_footer
,它们分别在前端的 head 标签和 body 标签结束之前触发。
这些 Hooks 可用于在这些战略位置显示脚本和数据。
(以下内容与原文类似,为了避免重复,此处省略Action Hook和Filter Hook的剩余示例及结论部分)
(FAQs部分也因篇幅原因省略)
以上是揭开WordPress挂钩系统的神秘面纱的详细内容。更多信息请关注PHP中文网其他相关文章!

WordPressisadvantageousovercodingawebsitefromscratchdueto:1)easeofuseandfasterdevelopment,2)flexibilityandscalability,3)strongcommunitysupport,4)built-inSEOandmarketingtools,5)cost-effectiveness,and6)regularsecurityupdates.Thesefeaturesallowforquicke

WordPressIsAcmsDuetoItseAsofuse,自定义,USERMANAMECTION,SEO和COMMUNITYSUPPORT.1)ITSIMPLIFIESCONTENTMANGAMEWITHANINTUISIDERFEEFFECE.2)提供extentensiveCustomizationThroughThroughTheMesandPlugins.3)supportrobustuserrolesandplugins.4)supportrobustuserrolesandpermissions.4)增强

在 WordPress 网站上启用评论功能,可以为访客提供参与讨论和分享反馈的平台。为此,请按照以下步骤操作:启用评论:在仪表盘中,导航至“设置”>“讨论”,并选中“允许评论”复选框。创建评论表单:在编辑器中,单击“添加块”并搜索“评论”块,将其添加到内容中。自定义评论表单:通过设置标题、标签、占位符和按钮文本来定制评论块。保存更改:单击“更新”以保存评论框并将其添加到页面或文章中。

如何复制 WordPress 子站?步骤:在主站创建子站。在主站克隆子站。将克隆导入目标位置。更新域名(可选)。分开插件和主题。

在WordPress中创建自定义页头的步骤如下:编辑主题文件“header.php”。添加您的网站名称和描述。创建导航菜单。添加搜索栏。保存更改并查看您的自定义页头。

WordPress 网站中启用评论功能:1. 登录管理面板,转到 "设置"-"讨论",勾选 "允许评论";2. 选择显示评论的位置;3. 自定义评论表单;4. 管理评论,批准、拒绝或删除;5. 使用 <?php comments_template(); ?> 标签显示评论;6. 启用嵌套评论;7. 调整评论外形;8. 使用插件和验证码防止垃圾评论;9. 鼓励用户使用 Gravatar 头像;10. 创建评论指

可以通过 WordPress 安装 FTP 插件,配置 FTP 连接,然后使用文件管理器上传源码。步骤包括:安装 FTP 插件、配置连接、浏览上传位置、上传文件、检查上传成功。

如何复制 WordPress 代码?从管理界面复制:登录 WordPress 网站,导航到目标位置,选择代码并按 Ctrl C (Windows)/Command C (Mac) 复制代码。从文件复制:使用 SSH 或 FTP 连接到服务器,导航到主题或插件文件,选择代码并按 Ctrl C (Windows)/Command C (Mac) 复制代码。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3 Linux新版
SublimeText3 Linux最新版

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能