Ich habe eine benutzerdefinierte Schleife, mit der ich einige Immobilienlisten anzeige, die innerhalb von 60 Tagen verfügbar sein werden. Ich rufe es mit folgender Funktion auf:
<?php
$sixtydays = date('Y/m/d', strtotime('+60 days'));
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$query = new PostsOrderedByMetaQuery(array(
'post_type' => array('post', 'real-estate'),
'meta_key' => 'Time Available',
'meta_compare' => '<=',
'meta_value' => $sixtydays,
'paged' => $paged,
'orderby_meta_key' => 'Price',
'orderby_order' => 'ASC'
));
?>
<?php while ($query->have_posts()) : $query->the_post(); ?>
Während die Schleife großartig funktioniert, kann ich sie nicht zum Paginieren bringen. Es zeigt die ersten 10 (meine Standard) Beiträge, aber nicht die Paginierung. Die einzige Möglichkeit, alle Beiträge anzuzeigen, besteht darin, sie auf einer Seite anzuzeigen, indem Sie hinzufügen, dass 'posts_per_page' => -1,
ich ähnliche Schleifen auf anderen Seiten habe, bei denen das Paginieren kein Problem darstellt. Der einzige Unterschied zu diesem ist, dass es zwei Metaschlüssel gibt, die die Beiträge filtern.
Ich benutze WP Page Navi für diesen und den Rest meiner Seiten. Ich schließe die Schleife und füge die Paginierung mit dem folgenden Code hinzu:
<?php endwhile; // End the loop. Whew. ?>
<?php wp_pagenavi(); ?>
<?php wp_reset_query(); ?>
Wie kann ich das beheben?
quelle
Antworten:
Ich habe dieses Problem schon einmal mit PageNavi erlebt. Meine Lösung besteht darin, die Variable $ wp_query vorübergehend zu hijacken und sie nach dem Schließen der Schleife erneut zuzuweisen. Ein Beispiel:
Der letzte Schritt besteht darin, die Variable $ wp_query der ursprünglichen Variable zuzuweisen und die Abfrage anschließend zum Starten zurückzusetzen.
* Bearbeiten: * Feste PHP-Tag. Guter Scharfschütze.
quelle
wp_pagenavi()
Akzeptiert jetzt auch dasquery
Argument , sodass Sie anstelle des Überschreibens$wp_query
schreiben könnenwp_pagename( array( 'query' => $my_query ) )
.WP_Query();
.Ich hatte heute früher ein ähnliches Problem ...
Haben Sie einen benutzerdefinierten Beitragstyp und eine Seite oder einen Beitrag mit demselben Slug? Bedeutet dies, dass die URL einer Seite, die Sie haben / immobilien, und die benutzerdefinierte Post-Typ-URL, die Sie unter / immobilien umschreiben?
Wenn das der Fall ist, können Sie nicht 2 mit der gleichen URL haben, sonst wird WordPress verwirrt.
Sie können entweder die URL ändern oder http://wordpress.org/support/topic/pagination-with-custom-post-type-listing?replies=23#post-1637753 versuchen . Ich habe beschlossen, meine URL zu ändern, aber jemand dort hat eine benutzerdefinierte Abfrage geschrieben, um das Problem zu umgehen
quelle
Ich benutze dies für benutzerdefinierte Paginierung und seine Arbeit gut
// Definiere dies für jedes Template wie Template-Newsletter
quelle
Dies ist die Lösung, die für mich funktioniert hat, indem ein Teil des Originalcodes von nurain und die Antwort von Jan Fabry verwendet wurden:
quelle
Sie können Ihren benutzerdefinierten Beitragstyp anzeigen, indem Sie diese Methode verwenden. Ihre Paginierung kann funktionieren !!!
quelle