it-swarm.com.de

3 Spalten, 3 Kategorien, ein Archiv und eine Paginierung

Ich habe drei Spalten, in denen jeweils zwei Beiträge aus verschiedenen Kategorien angezeigt werden und die jeweils eine neue Abfrage darstellen.

Diese drei Spalten werden auf ihrer übergeordneten Kategorieseite angezeigt, auf der 6 Posts pro Seite angezeigt werden.

$soundPosts = new WP_Query('posts_per_page=2&cat=4&paged=' . get_query_var( 'paged' ));
$viewsPosts = new WP_Query('posts_per_page=2&cat=5&paged=' . get_query_var( 'paged' ));
$wordsPosts = new WP_Query('posts_per_page=2&cat=6&paged=' . get_query_var( 'paged' ));

Im Moment funktioniert Paginierung irgendwie, aber nicht richtig. Es wird die Paginierung für die Hauptkategorie der Eltern verwendet.

        <div class="navigation">
            <div class="left"><?php previous_posts_link('&#60; Previous') ?></div>
            <div class="right"><?php next_posts_link('Next &#62;','') ?></div>
        </div>

Die Art der Paginierung funktioniert, da die übergeordnete Kategorie die Posts enthält und 6 Posts anzeigt. Dies funktioniert jedoch nicht immer, da die Posts nicht immer gleichmäßig auf die Spalten verteilt sind.

Wie kann ich die Navigationslinks manuell erstellen, damit die obigen Abfragen ausgeführt werden und nicht die Standard-Paginierung des Archivs? Und wie und am Ende aller Datensätze kann ich das Archiv veranlassen, eine 404-Seite für die Verwendung mit Infinte Scroll zurückzugeben.

Bemerkenswert ist auch, dass mir diese Frage/Antwort bekannt ist, aber ich glaube nicht, dass dies eine akzeptable Lösung ist oder dass es sich tatsächlich um dasselbe Setup handelt habe derzeit.

Vielen Dank für alle Hinweise!

1
addedlovely

OK, das ist, was ich am Ende gemacht habe, das funktioniert gut:

// get paged value.
$paged = get_query_var( 'paged' );
$maxPages = array();
$max = 0;

// Create the queries
$soundPosts = new WP_Query('posts_per_page=1&cat=4&paged=' . $paged);
$viewsPosts = new WP_Query('posts_per_page=1&cat=5&paged=' . $paged);
$wordsPosts = new WP_Query('posts_per_page=1&cat=6&paged=' . $paged);

// get max number of pages for each query
array_Push($maxPages,$soundPosts->max_num_pages);
array_Push($maxPages,$viewsPosts->max_num_pages);
array_Push($maxPages,$wordsPosts->max_num_pages);

// get the max number of pages from all three.
$max = max($maxPages); 

// If we are out of posts, return 404
if ($paged > $max) {
$wp_query->set_404();
status_header('404');
}

// proceed as normal.
get_header(); 

Dann für die Paginierung Links, nur ein bisschen Logik aus den Variablen erstellt, um zu entscheiden, ob die Links angezeigt werden sollen oder nicht.

<?php 
if ($paged > 0 && $paged < $max) { ?>
    <div class="left"><?php previous_posts_link('&#60; Previous') ?></div>
<?php 
}
if ($paged <= $max) { ?>
    <div class="right"><?php next_posts_link('Next &#62;','') ?></div>
<?php } ?>
2
addedlovely