Coding | Hooks und Filter | PHP | WordPress

Der kurze Dienstweg zu Custom Taxonomy Archiven

Dieses Blog (und seine Besucher) musste(n) schon manches Experiment aushalten, um die Alltagstauglichkeit von Ideen rund um WordPress zu testen. Bis vor wenigen Tagen führte ich ein Plugin mit sechs verschiedenen Custom Post Types und sieben Custom Taxonomies (zwei davon für “interne” Verwendung) mit. Die Wiedergabe der Inhalte erfolgte über einen komplexen Custom Query in einem Template, das zum Plugin gehörte, und dessen Einbindung über den Hook template_redirect veranlasst worden war.

Custom Post Types in ein Plugin auszulagern ist sinnvoll, auch wenn es mittlerweile nur noch zwei sind. Templates auszulagen war in meinem Fall keine günstige Vorgehensweise, da die Abhängigkeit von der Themestruktur zu groß war, was bei Änderungen an Theme-Templates auch Änderungen am Template im Plugin erforderlich machte.

Auch wenn sie nicht im Loop auf der Blogstartseite enthalten sind, den Zugriff auf (öffentlich zugängliche) Custom Post Type Archive bekommen man bei geeignet eingestellten Permalinks, indem man den Slug an die URL der Site hängt (Beispiel: https://blog.webentwicklerin.at/linklibrary/ – daneben darf es keine Seite geben, die denselben Slug verwendet).

Anders hingegen verhält es sich mit Custom Taxonomies. Nachdem ich mich vom ausgelagerten Template mit seinen Tax-Queries verabschiedet hatte, führten sämtliche Klicks auf einen Term meiner Linklibrary (Custom Post Type) zu einem 404-Fehler. Da hilft auch kein Flush der Rewrite-Regeln, aber eine Modifikation der Main Query-Parameter an pre_get_posts.

function pppf_query_taxonomies($query) { if ( $query->is_tax('my_custom_taxonomy') && is_main_query() ) { $queried_object = $query->get_queried_object(); $term = $queried_object->term_id; $query->set( 'post_type', 'my_custom_post_type' ); $query->set( 'term_id', $term ); } } add_action( 'pre_get_posts', 'pppf_query_taxonomies' );

Dieser Eingriff ist nur erforderlich wenn ein betroffener Custom Post Type nicht ohnedies bereits via pre_get_posts in die Artikelliste auf der Blogstartseite aufgenommen wurde.

weiter schmökern

Schreibe einen Kommentar

Bitte Kommentarfunktion nicht für Supportanfragen nutzen. Dem kann hier nicht entsprochen werden.

Deine E-Mail-Adresse wird nicht veröffentlicht.