Reset Loop get_posts();

时间:2013-09-21 作者:user33913

我加的太单一了。php菜单:

<ul id="nav">
<?php
$all_posts = get_posts(array(

));

// this variable will contain all the posts in a associative array
// with three levels, for every year, month and posts.

$ordered_posts = array();

foreach ($all_posts as $single) {
$year  = mysql2date(\'Y\', $single->post_date);
$month = mysql2date(\'F\', $single->post_date);
// specifies the position of the current post
$ordered_posts[$year][$month][] = $single;
}

// iterates the years
foreach ($ordered_posts as $year => $months) { ?>
<li>
    <?php echo $year ?>

    <ul class="active">
    <?php foreach ($months as $month => $posts ) { // iterates the moths ?>
    <?php foreach ($posts as $single ) { // iterates the posts ?>
        <li>
            <a href="<?php echo get_permalink($single->ID);// echo   \'#post-\'.$single->ID;?>"><?php echo get_the_title($single->ID); ?></a></li>
        </li>
    <?php } // ends foreach $posts ?>

    <?php } // ends foreach for $months ?>
    </ul>

</li> <?php
} // ends foreach for $ordered_posts
?>
</ul>
在此代码之后,将有一个get循环来打印单个帖子:

<div id="content" class="site-content" role="main">


    <?php /* The loop */ ?>
    <?php rewind_posts(); ?>
    <?php while ( have_posts() ) : the_post(); ?>

        <?php get_template_part( \'content\', get_post_format() ); ?>
        <?php twentythirteen_post_nav(); ?>
        <?php comments_template(); ?>

    <?php endwhile; ?>

</div><!-- #content -->
但在每一页上,我都有最新的帖子。

请帮帮我。

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

$posts 是WordPress使用的全局变量,将其更改为唯一值,它将按预期工作。

仅供参考,rewind_posts(); 这里没有必要,您还没有运行循环,因此没有要回放的内容。

结束

相关推荐

Control Loop Within Loop

我试图控制一个循环中的一个循环。我想做的是显示所有帖子,并每3篇帖子插入一个自定义帖子类型。所以它会像这样“后CPT后CPT后CPT后CPT…”我是这样做的global $loop_counter; $loop_counter = 0; if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> ?> // DO STUFF <?php $loop_counter+