REWIND_POSTS()-它的实际用途是什么,在哪里需要或首选使用它?

时间:2013-10-23 作者:Mayeenul Islam

不完整的Codex about this, 说得很简单:

rewind_posts():
倒带回路柱。

根据this WPSE thread, 具有Eugene Manuilov\'s回答,我得到:

<?php
// fetch first post from the loop
the_post();

// get post type
$post_type = get_post_type(); 

// rewind the loop posts
rewind_posts();
?>
在Ian Stewart的主题开发教程中,我发现rewind_posts()\'s用于archive.php, category.php, tag.php, author.php:

<?php the_post(); ?>
<!-- echo page title -->
<?php rewind_posts(); ?>
<?php while ( have_posts() ) : the_post(); ?>
   <!-- echo content -->
<?php endwhile; ?>
但在《2013年主题》中,我们看不到类似的内容,而是一个简单的WordPress循环,其中包含条件:

<?php if ( have_posts() ) : ?>
<!-- echo page title -->
<?php while ( have_posts() ) : the_post(); ?>
   <!-- echo content -->
<?php endwhile; ?>
<?php endif; ?>
所以,我只想知道,虽然我有WordPress循环可以使用,而且它也可以用于分页,那么where 我需要倒带循环吗why?

编辑

好的,在第一次回答之后,我得到了一篇很好的文章,描述了WordPress中的3个查询重置功能:

»3 Ways to Reset the WordPress Loop 作者:杰夫·斯塔尔。com公司

我希望这个答案能比我们现在得到的更有教育意义。

2 个回复
最合适的回答,由SO网友:Kishore Sahoo 整理而成

它通常清除当前回路

// main loop
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; endif; ?>

// rewind
<?php rewind_posts(); ?>

// new loop
<?php while (have_posts()) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; ?>
在这里,它清除主循环并从新循环开始

参考号:http://codex.wordpress.org/Function_Reference/rewind_posts

SO网友:br4nnigan

实际上是的not necessary 如果您使用have_posts() 在循环中,因为它是在所述函数的循环结束时调用的:

public function have_posts() {
    if ( $this->current_post + 1 < $this->post_count ) {
        return true;
    } elseif ( $this->current_post + 1 == $this->post_count && $this->post_count > 0 ) {
        /**
         * Fires once the loop has ended.
         *
         * @since 2.0.0
         *
         * @param WP_Query &$this The WP_Query instance (passed by reference).
         */
        do_action_ref_array( \'loop_end\', array( &$this ) );
        // Do some cleaning up after the loop
        $this->rewind_posts();
    }

    $this->in_the_loop = false;
    return false;
}

结束