WordPress Custom Taxonomies und Pagination

end 588614 1920
Bildquelle: Pixabay, niekverlaan

Das Szenario: Es gab fünf Custom Post Types mit mehreren Custom Taxonomies. Vier von den Posttypes wurden mittels einer pre_get_post-Action in den Main Loop geholt. An keiner Stelle gab es Probleme mit der Pagination.

Eine Ausnahme war Posttype Nummer fünf, der seinen eigenen Bereich auf der Site bekommen sollte. Das get_queried_object() wusste stets wie viele Posts da waren, $wp_query->max_num_pages gab die richtige Anzahl der Seiten wieder (ob Hauptseite des Post Types oder Taxonomy-Term), und die Anzahl angeforderter Posts pro Seite unterschied sich nicht von den allgemeinen Einstellungen der Site. Und doch bekam ich nach dem Klick auf Seite 2 404 als Antwort, sobald ich mich in einer dem Ausnahme-Posttype zugeordneten Custom-Taxonomy-Kategorie bewegte.

Wenn es um die Pagination von benutzerdefinierten Posts und Taxonomien geht, findet man vordergründig Lösungsvorschläge eine pre_get_posts Aktion durchzuführen um die Anzahl gewünschter Posts zu modifizieren und so die Pagination bei Abweichung der gewünschten Anzahl von Posts pro Seite zu reparieren. Nur – so weit war ich auch schon, und in meinem Fall wich die Anzahl von Posts pro Seite ja nicht von der Voreinstellung ab. Daher fühlte ich mich von derlei Vorschlägen nicht unmittelbar betroffen.

Die Antwort im Artikel „custom post type paging not working past page 3“ beschreibt nicht ganz mein Problem (da die Anzahl von Posts pro Seite in meinem Fall nicht von der allgemeinen Seiteneinstellung abweicht), aber offenbar (auch) dessen Ursache (The main query runs before the template is loaded).

Damit erreichte ich schließlich genau was ich wollte ohne hinnehmen zu müssen was ich nicht wollte:

add_action('parse_query', 'add_linklibrary_query');

function add_linklibrary_query() {
    global $wp_query; 
    if ( is_tax('linkcategory') || is_tax('linktags') ) {
        $wp_query->query_vars['post_type'] =  array( 'linklibrary' );
         return $wp_query;
    }
}

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden. Die Angabe einer E-Mail-Adresse und eines Namens ist nicht erforderlich. Einen (Spitz)-Namen zu nennen wäre aber doch nett.

Schreibe einen Kommentar

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

Hinweis: Sowohl angegebener Name als auch E-Mail-Adresse (beides ist optional, dafür werden alle Kommentare vor Veröffentlichung geprüft) werden dauerhaft gespeichert. Du kannst jeder Zeit die Löschung Deiner Daten oder / und Kommentare einfordern, direkt über dieses Formular (wird nicht veröffentlicht, und im Anschluss gelöscht), und ich werde das umgehend erledigen. – Mit hinterlassenen Kommentaren hinterlegte IP-Adressen werden nach zwei Monaten automatisch gelöscht

publicly queryable