it-swarm.com.de

rewind_posts () - wie wird es gebraucht und wo wird es benötigt oder bevorzugt?

Der unvollständige Kodex dazu sagt ganz einfach:

rewind_posts ():
Spulen Sie die Loop-Pfosten zurück.

Laut diesem WPSE-Thread , mit Eugene Manuilov s Antwort habe ich:

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

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

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

In Ian Stewarts Tutorial zur Themenentwicklung habe ich festgestellt, dass rewind_posts() in archive.php, category.php, tag.php, author.php verwendet wird:

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

Aber im TwentyThirteen-Theme sehen wir nicht so etwas, sondern eine einfache WordPress-Schleife mit folgenden Bedingungen:

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

Also, ich möchte nur wissen, ob ich die WordPress-Schleife verwenden muss, und das funktioniert auch mit Paginierung. Dann muss ich where DIE SCHLEIFE ZURÜCKWICKELN und why ?

BEARBEITEN

Ok, nach der ersten Antwort habe ich einen sehr guten Artikel bekommen, der die 3 Query-Reset-Funktionen in WordPress beschreibt:

"3 Möglichkeiten zum Zurücksetzen der WordPress-Schleifevon Jeff Starr - DigWP.com

Ich hoffe, dass die Antwort viel lehrreicher sein kann als das, was wir derzeit haben.

4
Mayeenul Islam

Dies löscht im Allgemeinen die aktuelle Schleife

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

Hier löscht es die Hauptschleife und beginnt mit der neuen Schleife

Referenz: http://codex.wordpress.org/Function_Reference/rewind_posts

4
Kishore Sahoo

Es ist tatsächlich nicht notwendig wenn Sie have_posts() in der Schleife verwenden, da es am Ende der Schleife in der folgenden Funktion aufgerufen wird:

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;
}
1
brannigan