生命不息
折腾不止

wordpress的一个重要钩子(hook):posts_results

这个钩子的生效时间是 wordpress 从数据库取出文章 POST 的时候。相比” the_title”,”the_content” 来说更早。之前做自动机器翻译的插件时候,一直用的是 add_filter(‘the_content’, array($this, ‘post_content_wrap’),1,1) 和 add_filter(‘the_title’, array($this, ‘post_wrap’), 1, 2) 。后面发现对一些模板死活不生效。原因就在于,有些模板直接用 WP query 从数据库读数据,而不是使用 get_title 之类的现成函数,那么 the_title 和 the_content 的钩子就会失效。

而 post_results 就简单了,从数据库中读出来的时候直接操作。

 

function my_posts_results_filter( $posts ) {
	$filtered_posts = array();
	foreach ( $posts as $post ) {
		if ( false === strpos($post->post_title, 'selfie')) {
			// safe to add non-selfie title post to array
			$filtered_posts[] = $post;
		}
	}
	return $filtered_posts   ;
}
add_filter( 'posts_results', 'my_posts_results_filter',1,1);

 

用法详解:

add_filter( 'posts_results', ' 执行的函数名 ', 优先级 , 传入的参数数 );

 优先级默认是 10 ,如果大家都是 10 ,就是按代码的先后执行。我是做内容翻译,所以把优先级设到最高,这样别人处理的就是我已经翻译过的内容了。 
post_results 的传入参数个数是 1. 不能改。传入的就是 POST 数组。 

 其实 WordPress 的功能非常强大,插件的接口也非常多,我看了一下午文档才找到这个符合我需求的接口。 
赞(0)
未经允许不得转载:91云(91yun.co) » wordpress的一个重要钩子(hook):posts_results

留言 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址