WordPress钩子详解:如何使用动作、过滤器和自定义钩子__wordpress教程

WordPress钩子详解:如何使用动作、过滤器和自定义钩子__wordpress教程

WordPress钩子(Hook)是WordPress开发人员的武器库中最重要的工具之一。它们是WordPress插件和主题开发的基础。您可以使用WordPress的许多内置钩子将自定义代码“连接到”WordPress核心,并执行修改某些内容。

有两种类型的WordPress钩子:ActionsFilters。Hook非常普遍,甚至WordPress Core本身也广泛使用它们。WordPress还提供了一种让您定义自己的自定义钩子的方法,以便其他开发人员可以挂钩到您的代码中。

了解动作、过滤器和自定义钩子的工作原理对于掌握WordPress开发至关重要。

本文的前半部分介绍了WordPress钩子的基础知识,并解释了它们如何与多个示例一起工作。在后半部分,您将学习如何使用钩子来自定义WordPress,创建自己的自定义钩子,并使用它们来构建自己的可扩展插件。

  1. 什么是WordPress钩子?
  2. 钩子 vs 动作 vs 过滤器
  3. WordPress钩子如何工作?
  4. 在哪里注册钩子及其函数?
  5. 使用WordPress钩子
  6. WordPress钩子列表和资源
  7. 查找在WordPress页面上注册的钩子
  8. “所有”钩子
  9. WordPress钩子存储在哪里?
  10. 如何创建自定义WordPress钩子
  11. 从WordPress钩子中删除回调函数
  12. 更多WordPress钩子教程

什么是WordPress钩子?

一个WordPress的页面是由很多的功能和数据库查询组装。WordPress核心、插件和主题协同工作以输出页面元素,如文本、图像、脚本和样式。完全组装后,浏览器会将它们放在一起并呈现页面。

WordPress钩子允许您在某些点“钩入”这个构建过程并运行您的自定义代码。钩子的主要功能是让你在不接触核心文件的情况下修改或添加功能到WordPress 。

WordPress钩子详解:如何使用动作、过滤器和自定义钩子__wordpress教程

钩子将帮助您使用自己的代码扩展WordPress

在WordPress的插件API赋予WordPress钩子的功能。您可以通过在WordPress运行时在特定实例中调用某些称为Hook Functions的WordPress函数来使用钩子。

使用钩子函数,您可以将自定义代码捆绑在回调函数中,并将其注册到任何钩子中。注册后,此回调将在钩子所在的任何地方运行,允许您增加或替换默认的WordPress功能。

钩子在代码执行过程中的位置是一个重要的因素。您将在接下来的部分中详细了解其重要性。

两种类型的WordPress钩子:动作和过滤器

WordPress包括两种类型的钩子,称为ActionsFilters。动作允许您在WordPress运行时的某些预定义点执行某些操作,而过滤器允许您修改WordPress处理的任何数据并返回这些数据。

动作Actions)在WordPress代码中定义为:

do_action( 'action_name', [optional_arguments] );

action_name字符串是动作的名称。您可以指定[optional_arguments]变量以将附加参数传递给回调函数。如果未指定此字段,则其默认值将为空。

示例:do_action( 'wp_head' )每次WordPress处理站点标题时,都可以挂接该动作以运行自定义代码。此动作没有任何其他参数。

过滤器(Filters)在WordPress代码中定义为:

apply_filters( 'filter_name', 'value_to_be_filtered', [optional_arguments] );

filter_name是过滤器的名称,value_to_be_filtered是可以被过滤器函数修改的值,[optional_arguments]可选,若干个可以传递给过滤器函数的参数。

例如:apply_filters( 'admin_footer_text' , string $text ) 这个过滤器可以用来修改管理页脚显示的文本。从WordPress 5.4开始,其默认在管理区域页脚中显示该句子:Thank you for creating with WordPress.

稍后您将通过WordPress核心中的许多示例来学习如何使用动作和过滤器钩子,这将有助您通过代码在网站上执行自定义某些内容。例如,您可以使用钩子在发布文章后自动发送电子邮件,或加载自定义样式表来更改站点的外观。

WordPress钩子详解:如何使用动作、过滤器和自定义钩子__wordpress教程

WordPress钩子可帮助您与网站互动或修改您的网站

为更好理解Wordpress钩子, 可将您的WordPress网站想象成盖房子。钩子类似于使用起重机来回移动建筑物品,在传输的项目是回调函数,其中包括您的自定义代码。这些项目(或功能)可以帮助您建造或改造房屋。

WordPress钩子详解:如何使用动作、过滤器和自定义钩子__wordpress教程

在WordPress中“wp_head”动作钩子的示例

回调函数可以是常规PHP函数、默认WordPress函数或您定义的自定义函数。

我们只能在连接到特定挂钩的特定载体上运输某些物品。因此,动作只能与动作函数挂钩同样,过滤器只能与过滤器函数挂钩。

虽然更换起重机上的吊钩和托架很乏味,但WordPress通过包含超过2,200种默认钩子使其变得非常容易。

WordPress钩子详解:如何使用动作、过滤器和自定义钩子__wordpress教程

WordPress 5.1有2200多个原生钩子(来源:Adam Brown)

您可以发现WordPress核心流程遍布有钩子,让您可以方便地钩子的确切位置运行您的自定义代码。

钩子(Hook) vs 动作(Action) vs 过滤器(Filter)

根据WordPress插件手册:

钩子(Hook)是以一段代码交互/修改另一段代码的一种方式……

钩子(Hook)包括两种类型:动作(Action)和过滤器(Filter)。

一些教程和指南将HookActionFilter的使用方式与之相关的函数混合在一起介绍,让初学者误以为它们之间存在广泛的不一致。但您仔细查看WordPress核心代码,您会发现添加动作和过滤器之间其实没有太大区别。

下面是wp-includes/plugin.php文件中为ADD_ACTION()函数的源代码:

function add_action( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) {      
return add_filter( $tag, $function_to_add, $priority, $accepted_args );
}

可留意到add_action()函数其实只是调用该add_filter()函数并返回其值。为什么?因为从根本上它们几乎以相同的方式工作,除了一个区别:apply_filters()函数返回一个可以更改现有数据的值,而该do_action() 函数不返回任何内容(PHP中的NULL值)。

如果您仍然感到困惑,请不要担心!读完本文的前半部分后,一切就都清楚了。

我们将坚持使用官方清晰、准确且通用的WordPress Codex术语来帮助你理解。现在请先熟悉下面显示的钩子示意图:

WordPress钩子详解:如何使用动作、过滤器和自定义钩子__wordpress教程

钩子程序:钩子、钩子函数和回调函数

让我们分解一下Actions和Filters之间的区别。

WordPress钩子 (Hook)
动作 (Actions) 过滤器 (Filter)
动作用于在WordPress Core执行期间的特定点运行自定义函数。 过滤器用于修改或自定义其他功能使用的数据。
动作由do_action( ‘action_name’ )WordPress代码中的函数定义/创建。 过滤器由apply_filters( ‘filter_name’, ‘value_to_be_filtered’ )WordPress代码中的函数定义/创建。
动作也称为动作钩子 过滤器也称为过滤器钩子
动作只能与动作函数挂钩。例如add_action()remove_action() 过滤器只能与过滤器函数挂钩。例如add_filter()remove_filter()
动作函数不需要向它们的回调函数传递任何参数。 过滤器函数需要至少传递一个参数给它们的回调函数。
动作函数可以执行任何类型的任务,包括改变WordPress工作方式的行为。 过滤器函数仅用于修改过滤器传递给它们的数据。
动作函数应该不return什么。但是,它们可以echo输出或与数据库交互。 过滤器函数必须最有return动作,即使过滤器函数什么都不改变,它仍然必须将未修改的数据重新return
只要代码有效,动作几乎可以执行任何操作。 过滤器应该以孤立的方式工作,因此它们不会产生任何意外的副作用。
总结:一个动作会中断常规的代码执行过程,用它接收到的信息做一些事情,但什么都不返回,然后退出。 总结:过滤器修改它接收到的信息,将其返回给调用钩子函数,其他函数可以使用它返回的值。

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/3150.html

(0)
匿名
上一篇 2023年12月14日 下午5:09
下一篇 2023年12月14日 下午5:10

相关推荐

新手站长从“心”出发,感谢16年您始终不离不弃。