Ankerlink an den Anfang der Seite
space 3197611 1920
Generic filters
Filter by Kategorien

Der Beitrag, geschriebem am 28. September 2018, ist schon etwas älter und könnte womöglich nicht mehr aktuell sein

Die Anzahl berechneter Seiten ist bei 6 Einträge pro Seite mit 8 korrekt, und die mit paginate_links generierte Paginierung entspricht dem. Bis Seite 5 werden mir auch die richtigen Einträge angezeigt. Ab Seite 6 allerdings erhalte ich nur noch 404-Meldungen.

Da es sich um ein Post Type Archiv handelt, würde auch the_posts_pagination funktionieren. Das zeigt von vornherein nur 5 Seiten an, die allerdings dieselben und korrekt gezählten Ergebnisse anzeigen wie paginate_links. Die Posts die auf den letzten drei Seiten kommen sollten, werden einfach „verschluckt“.

Das Verflixte an den Paginierungen bei Custom Post Types, Taxonomies oder Custom Queries ist, dass die Berechnungen teilweise stimmen, und teilweise nicht. Zum Beispiel erhält man die richtige Anzahl von Beiträgen und der erste Beitrag auf Seite zwei ist der 7. Beitrag. Es wird also keiner ausgelassen. Auf den 5 funktionierenden Seiten kommen die jeweils zu erwartenden Beiträge. Was ab Seite 6 kommen sollte verschwindet jedoch im 404. Verwirrungen wegen nicht gefunden-Fehlern im Zusammenhang mit Paginierungen kommen daher häufig vor, und haben mich in der Vergangenheit mehr als einmal ins Tüfteln gebracht.

Grund dafür ist in diesem Fall, dass in den WordPress-Einstellungen unter Lesen die festgelegte Anzahl für Blogseiten zeigen maximal mit 10 höher ist, als die Anzahl der Beiträge im Archiv (wäre sie niedriger oder gleich, würde sich das nicht auswirken). Die Seitenanzahl die the_posts_pagination wiedergibt entspricht dieser Einstellung. Die angezeigten Beiträge entsprechen hingegen dem posts_per_page-Parameter in den Custom Query Argumenten – soweit die Standard-Paginierung reicht.

Maßnahmen

entweder 1. pre_get_posts

function custom_number_of_news($query) {
	if ( $query->is_main_query() && !is_admin() ) {
		if ( $query->is_tax('news_tags') || $query->is_tax('news_category') || $query->is_post_type_archive('news') ) {
			$query->set( 'posts_per_page', 6 );
		}
	}
}
add_action( 'pre_get_posts', 'custom_number_of_news' );

oder 2. parse_query

function custom_number_of_news($query) {
	if ( is_admin() ) return;
	if ( $query->is_tax('news_tags') || $query->is_tax('news_category') || $query->is_post_type_archive('news') ) {
		$query->set( 'posts_per_page', 6 );
	}
}
add_action( 'parse_query', 'custom_number_of_news' );

Bitte das Kommentarfeld nicht für Supportanfragen nutzen; hier kann kein Support angeboten werden. Die Angabe von Name oder E-Mail-Adresse ist optional, ein Spitzname wäre trotzdem nett.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Hinweis: Name und E-Mail-Adresse (beides optional, da alle Kommentare moderiert werden) werden dauerhaft gespeichert. Über dieses Formular kann jeder Zeit die Löschung persönlicher Daten oder Kommentare angefordert werden; die Anfrage wird nicht veröffentlicht und nach der Bearbeitung gelöscht. IP-Adressen, die mit Kommentaren gespeichert werden, werden nach zwei Monaten automatisch gelöscht.

Ihre Nachricht wird möglicherweise zur Spam-Prüfung an OpenAI (USA) weitergeleitet. Weitere Informationen finden Sie in unserer Datenschutzerklärung.