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

它们为函数提供了一种在执行WordPress Core,插件和主题期间修改数据的方法。它们是action的对应物。

与aciton不同,筛选器旨在以隔离方式工作,并且不应产生副作用,例如影响全局变量和输出。过滤器希望将某些内容返回给它们。

 

添加过滤器

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

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

您将使用 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' );

假设我们有一个帖子标题“学习WordPress”,上面的例子会将其修改为“学习WordPress被过滤”。

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

 

其他参数

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' );