短代码需要return
它们的输出,否则无论何时处理包含它的内容,输出都会出现,而不是在内容内部实际出现快捷码的位置。
实现这一点的最简单方法是使用output buffering 要捕获输出,请使用ob_start()
然后返回它捕获的内容ob_get_clean()
:
function blog_post_home_shortcode() {
ob_start();
$query = new WP_Query( array(
\'post_type\' => \'post\',
\'order\' => \'DESC\',
\'post_status\' => \' publish\',
\'posts_per_page\' => 3
) );
while ($query->have_posts()): $query->the_post();
the_title();
endwhile;
wp_reset_postdata();
return ob_get_clean();
}
add_shortcode( \'blogs_home\', \'blog_post_home_shortcode\' );
请参见
the documentation 更多信息(我的重点):
将短代码处理程序函数的返回值插入到post内容输出中,以代替短代码宏。Remember to use
return and not echo - 任何回显的内容都将输出到浏览器,但不会显示在页面的正确位置。