首页 / 插件开发手册 / 钩子 Hooks / 过滤器 Filter

过滤器 Filter

过滤器钩子的两种类型之一。

它们为函数提供了一种在执行WordPress核心、插件和主题期间修改数据的方法,它们是动作的对应项。

动作不同,过滤器旨在以孤立的方式工作,并且不应该有副作用,例如影响全局变量和输出。过滤器希望有东西返回给它们。

 

添加过滤器

添加过滤器的过程包括两个步骤。

首先,您需要创建一个回调函数,该函数将在运行过滤器时被调用。其次,需要将回调函数添加到钩子中,钩子将执行函数调用。

您将使用add_filter()函数,传递至少两个参数:

  1. string $hook_name 这是您要挂接的过滤器的名称
  2. callable $callback 回调函数的名称

下面的示例将在执行the_title过滤器时运行。

function wporg_filter_title( $title ) {
	return 'The ' . $title . ' was filtered';
}
add_filter( 'the_title', 'wporg_filter_title' );

假设我们有一篇文章标题“Learning WordPress”,上面的例子将其修改为“Learning WordPress was filtered”。

您可以参考钩子一章以获取可用钩子的列表。

随着您获得更多经验,浏览WordPress核心源代码将让您找到最合适的钩子。

 

其他参数

add_filter()可以接受两个额外的参数,int $priority表示赋予回调函数的优先级,以及int $accepted_args表示将传递给回调函数的参数数量。

有关这些参数的详细解释,请阅读关于动作的文章。

 

实例

要在满足特定条件时将CSS类添加到<body>标记中,请执行以下操作:

function wporg_css_body_class( $classes ) {
	if ( ! is_admin() ) {
		$classes[] = 'wporg-is-awesome';
	}
	return $classes;
}
add_filter( 'body_class', 'wporg_css_body_class' );