如何使用wp_get_recent_post?

时间:2013-08-12 作者:That Brazilian Guy

我试图在侧边栏上显示最近8篇文章的标题和摘录。

我得到了一个列表,其中:

所有项目都链接到最旧的帖子所有标题都是“应该显示的帖子的id号”+“最旧的帖子标题”所有摘录都来自最旧的帖子

<?php
        $args = array( \'numberposts\' => \'8\' );
        $recent_posts = wp_get_recent_posts( $args );
        $noticias_highlight = true;

        foreach( $recent_posts as $recent ){ 
?>
                    <div class="entry <?php if ($noticias_highlight) echo \'highlight\'; $noticias_highlight = !$noticias_highlight; ?>">
                        <div class="title"><p><a href="<?php the_permalink($recent["ID"]); ?>"><?php the_title($recent["ID"]); ?></a></p></div>
                        <div class="subtitle"><?php the_excerpt($recent["ID"]); ?></div>
                    </div>
<?php
        } 
?>

3 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

不要使用“助手”方法,它们往往会造成更多的麻烦。

任何时候你想要抓取帖子,无论是最新的、最老的、类别中的帖子,都可以使用WP_Query 循环,以下是其标准形式:

$query = new WP_Query( $args );
if ( $query->have_posts() ) {
    while ( $query->have_posts() ) {
        $query->the_post();
        // do stuff
    }
    wp_reset_postdata();
} else {
    // none were found
}
这是什么wp_recent_posts 将在内部进行,尽管做得不太好。因此,请将上述内容保存到编辑器中的自动完成宏中

SO网友:That Brazilian Guy

问题代码中有许多错误:

  • the_permalink() 不接受任何参数,并返回当前帖子的链接。使用echo get_permalink() 取而代之的是
  • the_title() 打印当前帖子的标题,其第一个参数是要在标题之前打印的字符串。这就是为什么标题都是相同的,但包含正确帖子的数字ID。使用echo get_the_title() 取而代之的是
  • the_excerpt() 不接受任何参数并打印当前帖子的摘录。我不知道是否有类似的函数接受post ID作为参数

    • wp_get_recent_posts() 将为每个帖子返回一个包含一个数组的数组(因此foreach). 因此the_title()get_the_title() 标题可通过返回$array[post_title], 摘录通过$array[post_excerpt] (如果没有摘录,则为空,不会自动截断帖子内容),$array[post_content] 对于帖子内容等wp_get_recent_posts() 似乎没有使用wordpress循环。因此,使用当前帖子的函数将始终使用相同的帖子。这就是示例中发生的情况
    even 最重要的是:

SO网友:dthorpe

您可以在侧栏标记中使用Display Posts快捷码。插件位于此处:http://wordpress.org/plugins/display-posts-shortcode/

结束

相关推荐