我想创建一个快捷码,显示任何页面的最后3篇帖子。。。。
应该这样布置
标题
节选阅读更多信息
我在函数中添加了此代码。php
function my_recent_post()
{
global $post;
$html = "";
$my_query = new WP_Query( array(
\'post_type\' => \'post\',
\'posts_per_page\' => 2
));
if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();
$html .= "<h2>" . get_the_title() . " </h2>";
$html .= "<p>" . get_the_excerpt() . "</p>";
$html .= "<a href=\\"" . get_permalink() . "\\" class=\\"button\\">Read more</a>";
endwhile; endif;
return $html;
}
add_shortcode( \'recent\', \'my_recent_post\' );
它可以工作,除了现在我的主页显示了一个分区中所需的2篇帖子,但问题是在内容下面,也就是说,在带有短代码的分区下面,它显示了整个第二篇文章(见图)。
有什么建议吗?
最合适的回答,由SO网友:TheDeadMedic 整理而成
添加wp_reset_postdata()
在您的while
回路:
endwhile;
wp_reset_postdata();
endif;
这将确保在运行快捷码后,还原当前帖子,以便任何模板标记都显示正确的数据。
SO网友:TBI Infotech
enter code here
强文本你能试试这个吗
function my_recent_post()
{
global $post;
$html = "";
$my_query = new WP_Query( array(
\'post_type\' => \'post\',
\'posts_per_page\' => 2
));
if( $my_query->have_posts() ) : while( $my_query->have_posts() ) : $my_query->the_post();
$html.= get_template_part( \'content\', \'excerpt\' );
endwhile; endif;
return $html;
}
add_shortcode( \'recent\', \'my_recent_post\' ); ?>
**<h1>create a php file content-excerpt.php and place in your theme</h1>
code of that file is**
<article id="post-<?php the_ID(); ?>">
<header class="entry-header">
<h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
</div>
</header>
<div class="entry-excerpt">
<?php the_excerpt(); ?>
</div>
<a href="<?php get_permalink() ?>" class="button">Read more</a>
</article>