Hallo Forum,
ich habe eine Abfrage programmiert, die mir auf der Startseite zuerst die letzten 5 Artikel aus Kategorie 1 anzeigt, und anschließend weitere Artikel in chronologischer Reihenfolge (natürlich ohne die ersten 5 Artikel nochmal aufzulisten). Die Abfrage funktioniert und sieht folgendermaßen aus:
<?php if (!is_paged()) {
$tops = get_posts('numberposts=5&category=1'); // letzte 5 Artikel aus Kategorie 1 holen
foreach ($tops as $top) { $ex[] = $top->ID; } // die IDs in Array $ex schreiben
$first = new WP_Query('showposts=5&cat=1'); // Artikel zur Anzeige holen
$args = array ('showposts' => 5, // Argumente für zweite Loop
'post__not_in' => $ex); // Artikel aus erster Loop ausschließen
$second = new WP_Query($args); // Artikel zur Anzeige holen
$wp_query->in_the_loop = true; ?>
...
<?php if ($first->have_posts()) { while ($first->have_posts()) { $first->the_post(); ?> // Erste Loop
...
<?php if ($second->have_posts()) { while ($second->have_posts()) { $second->the_post(); ?> // Zweite Loop
...
<?php } else { ?> // Falls nicht mehr Startseite, sondern Archiv
<?php if (have_posts()) { while (have_posts()) { the_post(); ?>
Alles anzeigen
Der Code funktioniert soweit. Ich habe nur ein kleines Problem:
Wenn es innerhalb der letzten 10 Artikel (chronologische Reihenfolge) nur 4 Artikel in Kategorie 1 gibt, würde ja ein Artikel geholt, der nach der normalen Loop-Reihenfolge erst auf Seite 2 erscheinen würde.
Dieser wird dann auf Seite 1 innerhalb der ersten WP_Query-Loop angezeigt, aber auf Seite zwei (die ja wieder die "normale Loop" benutzt) nochmal. Dafür wird dann ein Artikel auf der Startseite praktisch übersprungen.
Gibt es eine Möglichkeit, mit Hilfe der Abfrage-Parameter bei WP_Query oder get_posts(), dieses Verhalten zu unterdrücken?