Ich benutze benutzerdefinierte $ wp_query für die meisten meiner Archivseiten wie Taxonomie, Index, Kategorie und Autorenseite. Alles funktioniert gut, bis auf eine seltsame Sache – die Seitennumerierung der Autor-Vorlage funktionierte nicht. Die Seitennummerierung stoppt, um auf Seite 2 zu arbeiten, es wird direkt auf die 404-Seite geleitet. Die Seitennummerierung auf einer anderen Archivseite funktioniert einwandfrei.
Hier sind meine Codes für author.php Vorlage:
2, 'paged' => $paged, 'post_type'=> array('cpt1','cpt2')); $query = new WP_Query( $args ); ?> have_posts() ) : ?> Posts from first_name; ?>
have_posts() ) : $query->the_post(); ?> <a href="https://wordpress.stackexchange.com/questions/63043/pagination-only-wont-work-in-author-template/" rel="bookmark" title="Permanent Link: "> , in $query) ); ?>
Ich verwende sowieso das wp_pagenavi-Plugin für die Paginierung. Anscheinend weiß der wp_pagenavi, dass es Seiten gibt (weil es mehr als eine Seite auf dem Paginierungslink zeigt), aber wenn ich zur zweiten Seite gehe, stellt sich heraus, dass kein Post gefunden wurde (Seite 404).
Ich habe dieses Thema gegooglet und den ganzen Vorschlag, den ich gesucht habe, immer noch ohne Hilfe angewendet. Was ist das Problem?
Sie haben hier eine Reihe von Problemen. Der wichtigste ist, dass Ihre Abfrage Beiträge pro Seite auf zwei setzt, aber die Anzahl der verfügbaren Seiten hat keine Beziehung zu Ihrer benutzerdefinierten Abfrage. Wenn Ihre “Blog-Seiten höchstens anzeigen” unter Leseeinstellungen auf 10 gesetzt ist und ein Autor nur < = 10 Beiträge hat, gibt es keine zweite Seite.
Das andere Problem, das Sie feststellen werden, besteht darin, dass Sie in Ihrer Abfrage kein Autorenargument festlegen, sodass Sie keine Beiträge von einem bestimmten Autor abrufen.
Um beide Probleme zu lösen und Ressourcenverschwendung beim Erstellen sekundärer Abfragen zum Ersetzen von Standardabfragen zu vermeiden, sollten Sie das alles aus Ihren Vorlagen entfernen und stattdessen die Aktion pre_get_posts
in Ihrer functions.php
. Auf diese Weise wird die Seitenumbruch automatisch durchgeführt.
function wpa63043_author_pre_get( $query ) { if ( $query->is_author() && $query->is_main_query() ) : $query->set( 'posts_per_page', 2 ); $query->set( 'post_type', array('cpt1','cpt2') ); endif; } add_action( 'pre_get_posts', 'wpa63043_author_pre_get' );
Versuchen Sie, Ihren Seiten-Slug zu ändern. Wenn ich mich richtig erinnere, kann es nicht dasselbe wie der benutzerdefinierte Post-Typ sein.
@edit: Ich habe keine Zeit, es jetzt zu überprüfen, aber hier ist, was dieses Problem imho verursachen kann:
Sie haben eine Seite mit URL yoursite.com/author
. Ihre Website kann einen einzelnen Autor namens “John” im folgenden Beispiel yoursite.com/author/john/
: yoursite.com/author/john/
. Wenn Sie versuchen, eine Navigation hinzuzufügen, wird diese URL erstellt: yoursite.com/author/page/2
. WordPress geht davon aus, dass das Wort “page” im Beispiel eigentlich der Name des Autors ist, der nicht existiert und deshalb 404 Fehler bekommen. Wenn Sie Ihre yoursite.com/author/john
ändern, dass der einzelne Autor John: yoursite.com/author/john
und die Seite mit allen Autoren yoursite.com/authors/
: yoursite.com/authors/
(added s ), haben Sie keine URL-Probleme.