如何在页面中显示热门帖子?

时间:2013-04-15 作者:japanworm

我正试图在我的博客上创建一个“从这里开始”页面。我使用了一个模板,但它的内容是使用WordPress中的“添加新页面”向导创建的。

我知道如何显示讨论最多的帖子(评论最多),但PHP在页面中不起作用。当然,我可以将代码粘贴到页面模板中,但请看我的模板:

<?php
/*
  Template Name: Test Layout
*/
?>
<?php get_header(); ?>
<div id="start-here-wrapper">
    <ul>
        <?php
        $pc = new WP_Query( \'orderby=comment_count&ignore_sticky_posts=1&posts_per_page=6\' );
        while ( $pc->have_posts() ) : $pc->the_post(); ?>
            <li>
                <a href="<?php the_permalink(); ?>" title="<?php 
                    the_title(); ?>"><?php the_title(); ?></a>
            </li>
        <?php endwhile; ?>
    </ul>
    <?php the_content(); ?>
</div>
<?php get_footer(); ?>
我使用“内容”,这样我通过“页面向导”写的所有内容都会在那里。由于各种原因,我不想将所有内容复制并粘贴到模板本身中,因此我需要找到一种方法来使用上面的代码。

如果我把下面流行的帖子称为“内容”,它就可以正常工作。如果我在它之前调用它(如上面的代码),我页面的实际内容将不会显示,而是显示热门帖子列表中的最后一篇博客帖子。

2 个回复
SO网友:s_ha_dum

如果我将下面的热门帖子称为“内容”,那么它就可以正常工作。如果我在它之前调用它(如上面的代码),我页面的实际内容将不会显示,而是显示热门帖子列表中的最后一篇博客帖子。

如果我理解你,那是因为the_content 取决于全球$post 值,该值在页面加载的早期设置,然后由the_post 循环中的方法。在页面的早期,它被设置为页面的内容。然后,次循环会在每次迭代时覆盖它。循环完成后$post 使用循环中的最后一篇文章填充。

如果在运行该循环后需要原始post数据,则应使用wp_reset_postdata. 应该重置$post 返回到主查询中的当前帖子。在您的情况下,这将是您的页面内容。

此外,您不应该运行the_content 在适当的循环之外。这意味着在循环内运行不会总是像您期望的那样运行。

SO网友:Puni

s\\u ha\\u dum说了这一切。

    <?php
    /**
     * Template Name: Test Layout
     *
     */
    ?>
    <?php get_header(); ?>

    <div id="start-here-wrapper">
    <?php while ( have_posts() ) : the_post(); ?>
            <ul>
                <?php
                $pc = new WP_Query(\'orderby=comment_count&ignore_sticky_posts=1&posts_per_page=6\'); ?>
                <?php while ($pc->have_posts()) : $pc->the_post(); ?>
                    <li><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></li>
                <?php endwhile; ?>
                <?php wp_reset_postdata(); ?>
            </ul>
        <?php the_content(); ?>
    <?php endwhile; ?>
    </div>

    <?php get_footer(); ?>

结束

相关推荐