在页面上显示博客中的每一篇帖子和评论

时间:2014-08-01 作者:user57465

我正在尝试创建一个显示all 博客中的帖子,每个帖子的评论都列在相应帖子的下面。通过浏览互联网,我了解了如何使用以下代码创建页面模板:

  <?php
$args = array( \'numberposts\' => -1);
$posts= get_posts( $args );
if ($posts) {
    foreach ( $posts as $post ) {
        setup_postdata($post);
        Echo "<h1>"; the_title(); Echo "</h1>";
        Echo "<p><small>";the_time(\'jS F Y\'); Echo "</small></p>";
        the_content();
    }
}
?>
这很有效,而且很开心。But 我很困惑如何让个人帖子的评论也出现。到目前为止,我所尝试的一切都不起作用。任何帮助都将不胜感激。

谢谢

1 个回复
最合适的回答,由SO网友:The Maniac 整理而成

简短回答:添加comments_template(); 在您的the_content().

但有一种更好的方法可以做到这一点,它可以继承你在主博客上的任何格式和风格。也许你不想这样,所以如果需要的话,忽略其余的。

下面是改进的循环代码:

$args = array( \'numberposts\' => -1);
$query = new WP_Query($args);

if ($query->have_posts()) {

    while ($query->have_posts()) {
        $query->the_post();
        get_template_part(\'content\', get_post_format());
    }

    wp_reset_postdata();
} else {
    get_template_part(\'content\', \'none\');
}
这是一个非常基本的Wordpress循环,没有什么真正棘手的事情发生,您所提供的代码几乎就是这样。此代码不会直接输出内容,而是像中的循环一样加载模板部分index.php, 其中应包括comments_template() 如果这是一个半途而废的体面主题。

以下是更新后的改进循环,适用于没有content.php:

if ($query->have_posts()) {

    while ($query->have_posts()) {
        $query->the_post();
        the_content();
        comments_template();
    }

    wp_reset_postdata();
} else {
    echo \'No posts found.\';
}
但您的原始代码实际上是在做同样的事情,只是组织方式有点不同。我建议添加wp_reset_postdata() 调用您的代码,以便恢复原始查询。也许把它排除在外不会有什么坏处,但这将是一个很难在将来追踪到的bug。

结束

相关推荐

创建与“Pages”页面类似的仪表板菜单页面

我希望为“staff”类别创建一组静态页面,然后在仪表板中为它们提供一个单独的菜单选项,类似于已经存在的“pages”选项。我想知道的是,是否有一个内置的wordpress函数可以加速这个开发。如果你对从哪里开始搜索有什么建议,那就太好了,因为我当前的搜索被无数关于如何添加新页面或如何复制页面的教程所阻碍,而不是复制“页面”菜单。对这篇文章内容广泛、含糊不清表示歉意。我是wordpress的新手,我仍然在吸收这个庞大的知识库。