Frage
WP -Schleifen werden häufig verwendet, um Listen von Beiträgen in WordPress zu drucken:
<?php $loop = new WP_Query( array( 'post_type' => 'ff', 'ff' => 'show_ff', 'orderby' => 'menu_order', 'order' => 'ASC' ));
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<!-- here we're going to have all posts from show_ff category of ff type. -->
<?php endwhile; ?>
Gibt es eine Möglichkeit, zum Beispiel 3 erste Beiträge zu zeigen, dann ein Element (Div in meinem Fall) und erneut 3 nächste Beiträge?
Ich weiß, ich könnte 6 Schleifen in jedem Div machen, aber vielleicht gibt es eine andere Möglichkeit, diesen Code zu brechen? Vielleicht einige wenn in der Schleife Schleifen? Hier ist mein Konzept:
(...)
while ( $loop->have_posts() ) : $loop->the_post();
echo '3 first posts';
echo '<div class="special"></div>';
echo '3 last posts';
endwhile; ?>
Lösung
Ich glaube nicht, dass ich voll und ganz erfasst habe, wie Sie dies funktionieren sollen, aber wenn ich für einen Moment davon ausgehe, dass Sie nach dem dritten Ergebnis in der Schleife ein zusätzliches Markup einfügen möchten, solange die Schleife mindestens 6 Beiträge hat. .
Beispiel
Fügen Sie nach dem dritten Beitrag ein zusätzliches Markup ein, wenn die aktuelle Iteration mindestens 6 Beiträge hat
<?php
if( $loop->have_posts() ) :
//$post_count = $loop->found_posts; // <-- think this is the total, corrected below
$post_count = $loop->post_count; // should be the result count for the current page
$loop_count = 0;
while ( $loop->have_posts() ) : $loop->the_post();
$loop_count++;
?>
<!-- your regular loop markup, eg. title, content, etc.. -->
<?php
if( $post_count >= 6 && $loop_count == 3 ) :
?>
<!-- extra markup to put in when it's the end of the third post of this loop -->
<?php
endif;
endwhile;
endif;
?>
Auf diese Weise vermeiden Sie die Notwendigkeit, einen Offset zu verwenden, und können bei Bedarf Paging verwenden. Ich habe den Code nicht getestet, aber ich habe bereits zahlreiche Beispiele wie diese angegeben. Lassen Sie mich einfach irgendwelche Probleme wissen und ich werde den Code erneut untersuchen (und testen).
Andere Tipps
Sie können die Anzahl der Beiträge in der ersten Schleife auf drei begrenzen:
<?php $args = array('showposts' => 3);
$the_query = new WP_Query($args);
while ($the_query->have_posts()) : $the_query->the_post();
Zeigen Sie dann Ihre DIV und zeigen Sie dann erneut 3 Beiträge mit dem Parameter "Offset", um die 3 Firsts zu verbessern:
$args2 = array('showposts' => 3, 'offset' => 3 );
$the_query = new WP_Query($args2);
while ($the_query->have_posts()) : $the_query->the_post();
Mehr Infos in der Kodex.