rewind_posts (): ¿cuál es realmente su uso y dónde se requiere o se prefiere el uso?

4

El códice incompleto sobre esto , dice muy simplemente:

  

rewind_posts ():
  Rebobina las publicaciones en bucle.

Según este subproceso WPSE , con la respuesta de Eugene Manuilov , obtuve:

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

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

// rewind the loop posts
rewind_posts();
?>

Con el tutorial de desarrollo de temas de Ian Stewart, encontré el uso de rewind_posts() en 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; ?>

Pero en el tema TwentyThirteen no podemos ver algo como esto, pero un simple bucle de WordPress con condicional:

<?php if ( have_posts() ) : ?>
<!-- echo page title -->
<?php while ( have_posts() ) : the_post(); ?>
   <!-- echo content -->
<?php endwhile; ?>
<?php endif; ?>

Por lo tanto, solo quiero saber, mientras tengo el bucle de WordPress para usar, y eso también funciona con la paginación, luego dónde necesito REBOBLAR LA BANDEJA y por qué ?

EDITAR

Bien, después de la primera respuesta, recibí un artículo muy bueno que describe las 3 funciones de restablecimiento de consultas en WordPress:

  

» 3 formas de restablecer el bucle de WordPress por Jeff Starr - DigWP.com

Espero que con esta respuesta la respuesta sea mucho más educativa que la actual.

    
pregunta Mayeenul Islam 23.10.2013 - 17:40

2 respuestas

4

En general, se borra el bucle actual

// 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; ?>

Aquí se borra el bucle principal y comienza con el nuevo bucle

Referencia: enlace

    
respondido por el Kishore Sahoo 23.10.2013 - 18:41
1

En realidad, no es necesario si utiliza have_posts() en el bucle, ya que se llama al final del bucle en dicha función:

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;
}
    
respondido por el brannigan 13.06.2018 - 10:49

Lea otras preguntas en las etiquetas