Ich entwickle ein benutzerdefiniertes Thema mit benutzerdefinierten Post-Typen beteiligt. Benutzerdefinierte Post-Typen wurden über das Plugin ‘Pods’ ( http://pods.io ) definiert.
Beim Schreiben einer category.php wurde mir klar, dass die Standardschleife keine CPT-Posts (Custom Post Types) abruft, die zu einer bestimmten Kategorie gehören. Ist das richtig? Falls nicht, sind Vorlagen-Tags verfügbar, um CPT-Posts einer bestimmten Kategorie zu rendern?
Oder ist der richtige Weg, CPT-Posts eher über WP_Query abzurufen?
Benutzerdefinierte Post-Typen werden standardmäßig von der Hauptabfrage ausgenommen auf Taxonomieseiten und benutzerdefinierten Post-Typ-Archiven ausgeschlossen.
Sie können einfach pre_get_posts
, um die Hauptabfrage ( ändern Sie die pre_get_posts
, bevor die SQL-Abfrage erstellt und ausgeführt wird ) entsprechend Ihren Anforderungen zu ändern .
Nur ein paar Anmerkungen zu pre_get_posts
pre_get_posts
führt Front-End- und Back-End-Abfragen aus, daher ist es sehr wichtig, die is_admin()
Prüfung für Abfragen is_admin()
nur für das Front-End oder Back-End gedacht sind
pre_get_posts
ändert alle benutzerdefinierten Instanzen von WP_Query
, get_posts()
( die WP_Query
) und der Hauptabfrage ( die auch WP_Query
). Sie möchten die Überprüfung von is_main_query()
, um nur die Hauptabfrage zu ändern.
Sie können Folgendes in einem Plugin oder der functions.php Ihres Themes tun
add_action( 'pre_get_posts', function ( $q ) { if ( !is_admin() // Only target front end queries && $q->is_main_query() // Only target the main query && $q->is_category() // Only target category archives ) { $q->set( 'post_type', ['post', 'custom_post_type'] ); // Adjust as needed } )};
Sie müssen taxonomy.php
anstelle von category.php verwenden
Lesen Sie die Template-Hierarchie auf https://developer.wordpress.org/themes/basics/template-hierarchy/
Alle Ihre benutzerdefinierten Posts verwenden taxonomy.php
wenn Sie eine benutzerdefinierte Taxonomie definiert haben.
Nehmen wir zum Beispiel an, dass es zwei Taxonomien gibt, nämlich tax1 & tax2
Wenn Sie die gleiche Vorlage für beide Taxonomien möchten, dann gehen Sie mit taxonomy.php
Aber wenn Sie verschiedene Vorlagen für tax1 & tax2
dann verwenden Sie
taxonomy-tax1.php
& taxonomy-tax2.php
entsprechend
Ich hoffe, ich konnte einige Dinge für dich klären.
Alles Gute