首页/wordpress/WordPress-Hooks机制之add_filter()过滤钩子详解

WordPress-Hooks机制之add_filter()过滤钩子详解

WordPress的世界里,主要有2类钩子,一类是add_action(动作钩子),一类是add_filter(过滤钩子),两种类型钩子的主要区别是动作钩子无返回值,而过滤钩子必须要有返回值,之前我们已经介绍过,《WordPress-Hooks机制之do_action与add_action用法》,今天主要看下add_filter的用法,包括传递整型、字符串、类、对象等操作,先看下原型。

add_filter( string $tag, callable $function_to_add, int $priority = 10, int $accepted_args = 1 )

  • 是不是与add_action有点相似?
  • $tag,string,钩子的名称
  • $function_to_add,函数,当钩子激活时的回调函数
  • $priorith,表示动作调用顺序的整数,默认是10。数字越小,这个函数越早被调用,因为你可能要在同一个钩子上挂载好几个动作
  • $accepted_args,过滤钩子要传递给你的回调函数的参数数量,默认只有一个参数

用法一、post文章结尾添加版权信息


add_filter('the_content','ThemeHello_add_title',10,1);
function ThemeHello_add_title($content){
	return  $content.'<p style="color:red;">未经允许请勿转载</p>';
}

用法二、自定义post摘要长度


if( ! function_exists( 'prefix_custom_excerpt_length' ) )
{
    function prefix_custom_excerpt_length( $length ){
	return 40;
    }
}
add_filter( 'excerpt_length', 'prefix_custom_excerpt_length',10,1);

用法三、向add_filter传递类


class themehello{
	static public function bbq($content){
		return $content.get_called_class();
	} 
}
add_filter('the_content',array('themehello','bbq'));
//传递类,同时调用类中的静态方法,注意必须是静态,且权限为public,如protected、private报错。

用法四、向add_filter传递对象


class person{
	private $name;
	public function __construct($name){
		$this->name = $name;
	}

	public function say($content){
		return $content."My name is".$this->name;
	}

}
add_filter('the_content',array(new person("themehello"),'say'),10,1);
//传递对象,同时调用对象中的方法,且权限为public,如protected、private报错。

总结:

以上关于add_filter的常用用法,自定义摘要长度,增加版权信息等简单操作,实际上主要还是依托于wordpress的HOOKS机制,关于第三、四中用法,一般在引用外部类文件时比较常用。WordPress的HOOKS机制很重要,属于其核心部分,理解、掌握,才能事半功倍!
收藏:

相关资讯