WordPress 是一个令人惊叹的平台,也是世界上最受欢迎的内容管理系统。起这个标题的原因是因为它的可扩展性。在本系列中,我们将学习过滤器 - 这是扩展 WordPress 的最佳方法之一。
此功能的基础是挂钩 - WordPress 的过滤器和操作。如果没有它们,我们将无法利用 WordPress 真正的可扩展性。
在本系列中,我们将学习过滤器,这是扩展 WordPress 的最佳方法之一。这将是一个由七部分组成的系列,重点关注:
核心中有数百个 WordPress 过滤器,这 50 个示例只是其中的一部分(约 10%),因此如果您喜欢该系列并建议有关新过滤器的新示例,可能会有一个附录.
无论如何,是时候介绍 WordPress 过滤器了。让我们开始吧!
在 Codex 中,过滤器定义如下:
过滤器是 WordPress 在执行过程中的某些时刻、在对数据采取某些操作之前传递数据的函数。过滤器位于数据库和浏览器之间,以及浏览器和数据库之间; WordPress 中的大多数输入和输出都会至少经过一个过滤器。 WordPress 默认会进行一些过滤,您的插件可以添加自己的过滤。
因此,本质上,过滤器是在 WordPress 输出网站数据之前对网站数据进行处理的函数。 过滤器是 WordPress 中的两种挂钩之一 - 另一种称为操作,它是另一系列文章的主题。
尽管它看起来是一个复杂的主题,但过滤器(和操作)确实很容易理解。当我第一次遇到它们时,我也很害怕,但是在看到它们是多么简单之后,我只需通过检查 Codex 或挖掘核心代码就可以了解数百个过滤器和操作。
您绝对应该了解数百个过滤器。但首先,您需要知道如何使用它们。
正如我所说,使用 WordPress 过滤器非常简单。只需要了解一些基本功能,您需要了解每个过滤器的作用。 (说实话,最难的部分是学习所有过滤器,但正如您可以想象的那样,您无法一次学习每个过滤器 - 您需要在需要时才学习它们。)
在本节中,我们将讨论四件事:
为了处理从过滤器传递的数据,您需要创建一个函数来定义它将如何处理数据,并将其挂接到过滤器。
假设我们正在构建一个插件来删除帖子标题中的元音。你不是说“删除我的帖子标题中的元音”,而是说“将此函数(删除元音)挂钩到我的帖子标题的过滤器”。
复杂吗?并不真地。在下面的示例中,我们将编写从任何内容中删除元音的函数代码:
<?php function remove_the_vowels( $title ) { $title = preg_replace( '/[aeiou]/i', '', $title ); return $title; } ?>
该函数采用 $title
字符串,删除元音并将其返回。很容易,对吧?现在,让我们将其提升到一个新的水平并将其连接到过滤器:
<?php function remove_the_vowels( $title ) { $title = preg_replace( '/[aeiou]/i', '', $title ); return $title; } add_filter( 'the_title', 'remove_the_vowels' ); ?>
注意到新功能了吗?我们快速看一下add_filter()
:
<?php add_filter( $tag, $function_to_add, $priority, $accepted_args ); ?>
10
:如果设置较低,则该函数会较早运行;如果设置较高,则该函数会较晚运行。1
。我们也可以删除附加到过滤器的函数。为此,我们使用一个名为 remove_filter()
的简单函数。让我们看看它是如何工作的:
<?php remove_filter( $tag, $function_to_remove, $priority ); ?>
参数与add_filter()
几乎相同:
还有另一个名为 remove_all_filters()
的函数,它只有两个参数($tag
和 $priority
),您可以在其中设置过滤器的名称并设置优先级。顾名思义,它会删除所有与过滤器挂钩的函数。
想知道这些过滤器是如何创建的?有一个名为 apply_filters()
的特殊函数,它围绕核心代码创建数百个过滤器。当然,它可以在核心之外使用,这意味着我们也可以在插件和主题内创建过滤器。
让我们看看它是如何工作的:
<?php apply_filters( $tag, $value, $var1, $var2 /* ...and so on */ ); ?>
add_filter()
挂钩的过滤器函数修改的值。让我们考虑一个例子:假设您编写了一个仅返回 Peter Griffin 的名言的函数:
<?php function peter_griffin_quote() { $quote = "The bird is the word."; return $quote; } ?>
apply_filters()
函数,如下所示:
<?php function peter_griffin_quote() { $quote = "The bird is the word."; return apply_filters( 'peter_griffin_quote', $quote ); } ?>
<?php function change_the_quote( $quote ) { $quote = str_replace( 'bird', 'nerd', $quote ); return $quote; } add_filter( 'peter_griffin_quote', 'change_the_quote' ); ?>
现在,每次运行 peter_griffin_quote()
函数时,Peter 的引用都会略有更改,而无需开发人员编辑您的插件文件。小菜一碟!
如果您需要有关此主题的更多信息,您应该查看 Pippin Williamson 关于 Tuts+ Code 的精彩教程:“使用操作和过滤器编写可扩展插件”。在本教程中,您可以学习如何为您的插件或主题创建过滤器和操作。
您处理得越多,使用滤镜的乐趣就越多。它们有数百种,学习每一种都可以让您更接近成为一名 WordPress 大师。在本系列的下一部分中,我们将了解 10 个 WordPress 过滤器:
login_errors
comment_post_redirect
allowed_redirect_hosts
body_class
locale
sanitize_user
the_content
the_password_form
the_terms
wp_mail_from
我对这个系列感到非常兴奋,希望您能像我一样喜欢它。如果您认为您可以通过建议更多过滤器并要求更多示例来帮助我完成教程,请随时告诉我并通过下面的评论分享您的想法。
如果您喜欢本文中所读的内容,请不要忘记分享!
下一个教程见!
以上是WordPress 过滤器简介:50 个过滤器的全面概述的详细内容。更多信息请关注PHP中文网其他相关文章!