您需要了解的有关 WordPress 钩子的所有信息

已发表: 2015-07-11

迷上了 WordPress 钩子?

当 WordPress 致力于为您的网站呈现所需的组件时,幕后发生了很多事情。 每个页面由相当多的函数和数据库查询组成。 WordPress 核心和主题协同工作以输出文本、图像、样式表和其他文件。 在浏览器的帮助下,所有这些部分都被解释并放在一个网页中。 Hooks 提供了自定义、扩展和增强 WordPress 的能力。

钩子被恰当地命名是因为我们可以从字面上“钩入” WordPress 来检索、插入或修改数据,或者在幕后执行其他任务。 从某种意义上说,我们将自定义代码“挂”在这些钩子上。 众所周知,修改 WordPress 核心并不是一个好主意。 因此,WordPress 中的操作钩子和过滤器钩子是更改现有功能或创建新功能的最佳方式。

钩子的种类

进行自定义时,挂钩是必不可少的部分。 钩子有两种主要类型:动作钩子和过滤器钩子。 每个都提供不同的东西,因此了解何时使用哪个很重要。

钩子不能随便扔在任何地方。 需要有一些东西可以“吸引”。 有必要为该钩子设置执行点。 好消息是,在整个 WordPress 核心中,都有可供参考的内置挂钩。

四个应急绳

为什么要使用钩子

由于 WordPress 的许多核心功能使用操作和过滤器,因此可以使用钩子进行很多更改。 对于使用 WordPress 进行开发的任何人以及想要修改 WordPress 或主题行为的设计人员来说,了解钩子是绝对必要的。

动作挂钩

动作钩子表明发生了一些事情,不要与事件本身混淆。 操作由 WordPress 中发生的特定事件触发。 事件的示例可能是发布帖子、更改主题或激活插件等。 操作允许您在页面处理的特定点添加额外的功能。 动作挂钩可以执行以下操作:

  • 修改 WordPress 数据库中的数据
  • 修改浏览器中显示的内容
  • 发生事件时发送电子邮件
  • 向页面添加小部件、菜单或自定义消息

wordpress 钩子动作

动作挂钩示例

add_action( $hook, $function_to_add, $priority, $accepted_args );

add_action 函数的必需参数是要添加的钩子和函数。 包括优先级是可选的。 使用基于 1 到 999 范围的整数值,此数字确定该特定挂钩的函数的优先级顺序。 您可能不需要它,但是当您需要传递或接受多个参数时使用最后一个参数。

让我们看一个基本的动作钩子:

// This is the function, name it accordingly

function custom_welcome_text() { ?>

<div class="optional-custom-class">Hello WordPress!</div>

<?php }

&nbsp;

// Action function that outputs the function above into the theme hook

add_action( 'welcome_hook', 'custom_welcome_text', 5 );

这个基本钩子会将“Hello WordPress”添加到页面顶部。 它的优先级为 5。较低的数字对应于较早的执行。 默认情况下,它设置为 10,因此此示例在默认值之前执行。

过滤器挂钩

让我们回顾一个常见的场景以及过滤钩子是如何发挥作用的。 想想您的用户访问您的网站的所有时间,并加载一个帖子供他们阅读。 作为 WordPress 页面生命周期的一部分,WordPress 会在数据库中查询该帖子,然后将其返回到浏览器,以供用户阅读。 这一切听起来很简单,但在提供内容之前,WordPress 会通过任何已建立的过滤器运行数据。 这些过滤器挂钩可以在需要时轻松创建。

可以这样想:动作由特定事件触发,但过滤器允许在处理数据时拦截和修改数据。 当您需要在将数据呈现给浏览器或将数据从浏览器保存到数据库之前拦截、管理或返回数据时,使用过滤器挂钩。 例如,您可能希望在 WordPress HTML 元素中插入另一个 CSS 类,或注册其他元字段类型。 这两者都可以使用过滤器挂钩来执行。

wordpress 钩子过滤器

当 WordPress 生成页面时,过滤器位于数据库和浏览器之间。 此外,它们位于浏览器和数据库之间,因为 WordPress 将新帖子和评论添加到数据库中。 正因为如此,过滤钩子可以做一些有用的事情,比如:

  • 将数据添加到数据库或发送到浏览器屏幕
  • 在进入浏览器之前处理来自数据库的数据或在进入数据库之前来自浏览器的数据。

过滤器挂钩示例

在下面的示例中,我们将了解过滤器挂钩如何处理内容。 在内容将被使用、放入数据库或由 WordPress 呈现以在屏幕上查看之前触发此钩子。 这会在触发过滤器挂钩时更改数据。

add_filter函数是我们需要挂接到过滤器的函数。 这些参数可能看起来很熟悉, add_filteradd_action相同。 现在让我们连接到 WordPress 过滤器 the_content,它在显示任何帖子内容之前被调用。 在这个简单的示例中,过滤器将允许我们为每个帖子添加版权说明。 此时,过滤器将对传递给它们的数据执行操作。

add_filter( 'the_content', 'add_copyright_notice' );

function add_copyright_notice( $content )

{

return $content . " <br>This content is copyrighted.";

}

请注意,当你使用过滤器时,你必须总是返回一些东西,否则东西会坏掉。

为主题添加钩子

向主题添加挂钩和过滤器时,请确保您正在使用子主题。 主要原因是如果您在父主题中工作,如果主题文件有更新,这些修改可能会被覆盖。

希望您对钩子有更好的理解,它们可以做什么,以及它们如何提供帮助。 Hooks 可以很简单,也可以很复杂,或者介于两者之间。 一旦你掌握了基本概念,你很快就会被迷住。