Ich habe eine benutzerdefinierte Vorlage, mit der ich ausgelagerte Blog-Posts anzeigen möchte. Dies ist der Anfang meiner Datei:
$wp_query = new WP_Query($args);
if($wp_query->have_posts()){
while($wp_query->have_posts()){ $wp_query->the_post();
//something...
<?php next_posts_link('Older Entries'); ?>
<?php previous_posts_link('Newer Entries'); ?>
Es funktioniert gut - es zeigt ältere und neuere Links, wenn es sollte. Auf der ersten Seite wird nur ein Link zu älteren Einträgen angezeigt. Auf der zweiten Seite sowohl neuere als auch ältere Einträge usw.
Aber ich möchte nicht den aktuellen $wp_query
überschreiben ... Ich möchte für diese Schleife beispielsweise $wp_query2
verwenden. Und die Links erscheinen überhaupt nicht, wenn ich das tue.
Danach: http://codex.wordpress.org/Function_Reference/next_posts_link drucken sie einen Link zur vorherigen/nächsten Gruppe von Posts innerhalb der aktuellen Abfrage. Ich gehe davon aus, dass $wp_query2
nicht meine "CURRENT QUERY" ist, aber $wp_query
immer. Kann ich das irgendwie ändern?
UPDATE: Das manuelle Hinzufügen von &paged=2
zum Link bewirkt, dass der Link korrekt zur nächsten Gruppe von Posts (nächste Seite) und zur zweiten, dritten usw. Seite wechselt. previous_posts_link()
funktioniert auch, wenn ich $wp_query2
verwende. Daher fehlt mir auf jeder Seite nur die Funktion next_posts_link()
.
next_posts_link
und previous_posts_link
verwenden den globalen $wp_query
.
function get_next_posts_link( $label = null, $max_page = 0 ) { global $paged, $wp_query;
http://core.trac.wordpress.org/browser/tags/3.5/wp-includes/link-template.php#L1523
Das bedeutet, dass Sie so etwas tun müssen, damit diese richtig funktionieren.
$orig_query = $wp_query;
$wp_query = new WP_Query($args);
// the rest of your code
$wp_query = $orig_query;
Wenn Sie mit dem Laden von $wp_query
für diese Seite fertig sind, gibt es keinen Grund, ihn beizubehalten. Es sollte ziemlich einfach sein, diese Kernfunktionen zu kopieren, sie zu ändern, um einen Abfrageparameter zu akzeptieren, und Ihre eigenen Paging-Funktionen zu erstellen.
In der WordPress-Quelle sieht es so aus, als würde next_posts_link die globale Variable $ paged verwenden. Ich vermute, dass das nur für die Primärschleife funktionieren wird.
Eine ziemlich gute Lösung, wie Paginierung für sekundäre Schleifen funktioniert, finden Sie hier: http://weblogtoolscollection.com/archives/2008/04/19/paging-and-custom-wordpress-loops/
Dabei wird die ausgelagerte Abfragevariable explizit in der Abfrage festgelegt:
<h3>Recent Articles</h3>
<ul>
<?php
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('showposts=5'.'&paged='.$paged);
?>
Hoffentlich hilft das.