get_the_content()
实际上不会返回post_content
来自全局的属性$post
对象相反,它返回全局变量的第一页$pages
, 之前设置的the_post
吊钩已启动。看见L287 of wp-includes/post-template.
重置$pages
全局,您可以使用setup_postdata()
方法WP_Query
从传递的对象the_post
钩
add_action( \'the_post\', \'wpse_the_post\', 10, 2 );
function wpse_the_post( $post, $query ) {
$post->post_title = \'Foo\';
$post->post_content = \'Yolo\';
//* To prevent infinite loop
remove_action( \'the_post\', \'wpse_the_post\' );
$query->setup_postdata( $post );
add_action( \'the_post\', \'wpse_the_post\', 10, 2 );
}
这是一种倒退,因为您需要两次设置post数据。但如果你打算使用
the_post
钩
我会使用两种不同的过滤器(the_title
和the_content
).