过滤器是钩子的两种类型之一。
它们提供了一种在 WordPress 核心、插件和主题执行期间修改数据的方法。它们是动作的对应物。
与动作不同,过滤器旨在以隔离方式工作,并且绝不应产生side effects(副作用),例如影响全局变量和输出。过滤器期望有内容返回给它们。
添加过滤器
添加过滤器的过程包括两个步骤。
首先,您需要创建一个回调函数,当过滤器运行时将被调用。其次,您需要将您的回调函数添加到钩子中,该钩子将执行函数的调用。
您将使用add_filter()函数,至少传递两个参数:
string $hook_name即您要挂钩的过滤器的名称,以及callable $callback您的回调函数的名称。
下面的示例将在the_title过滤器执行时运行。
function wporg_filter_title( $title ) {
return 'The ' . $title . ' was filtered';
}
add_filter( 'the_title', 'wporg_filter_title' );假设我们有一个帖子标题“Learning WordPress",上述示例将将其修改为"The Learning WordPress was filtered"。
您可以参考钩子章节以获取可用钩子的列表。
随着您获得更多经验,查看 WordPress 核心源代码将允许您找到最合适的钩子。
附加参数
add_filter()可以接受两个附加参数,int $priority用于给定回调函数的优先级,以及int $accepted_args用于传递给回调函数的参数数量。
有关这些参数的详细解释,请阅读动作文章。
示例
当满足特定条件时,为<body>标签添加 CSS 类:
function wporg_css_body_class( $classes ) {
if ( ! is_admin() ) {
$classes[] = 'wporg-is-awesome';
}
return $classes;
}
add_filter( 'body_class', 'wporg_css_body_class' );