Dieses Tutorial über die Einbindung von benutzerdefinierten Beitragstypen in WordPress-Archivseiten steht im Zusammenhang mit meinem vorherigen Artikel über die Einbindung von benutzerdefinierten Beitragstypen in WordPress-Suchergebnissen.
Wir werden lernen, wie man benutzerdefinierte Beitragstypen in den WordPress-Archiven erscheinen lässt, indem man die Hauptabfrage über die pre_get_posts
Haken.
Wichtigste Erkenntnisse
- Standardmäßig werden benutzerdefinierte Beitragstypen nicht in Archivseiten aufgenommen, selbst wenn sie die in WordPress integrierten Standard-Kategorie- und Tag-Taxonomien verwenden.
- In dieser schrittweisen Anleitung werden Sie eine Funktion erstellen, die benutzerdefinierte Beitragstypen in Ihren WordPress-Archivseiten anzeigt.
Erstellen der Funktion zum Einfügen benutzerdefinierter Beitragstypen in WordPress-Archivseiten
Öffnen Sie Ihr functions.php
und fügen Sie den folgenden Codeschnipsel ein:
/**
* This function modifies the main WordPress archive query for categories
* and tags to include an array of post types instead of the default 'post' post type.
*
* @param object $query The main WordPress query.
*/
function tg_include_custom_post_types_in_archive_pages( $query ) {
if ( $query->is_main_query() && ! is_admin() && ( is_category() || is_tag() && empty( $query->query_vars['suppress_filters'] ) ) ) {
$query->set( 'post_type', array( 'post', 'movies', 'products', 'portfolio' ) );
}
}
add_action( 'pre_get_posts', 'tg_include_custom_post_types_in_archive_pages' );
Was tut diese Funktion? Sie ändert die primäre WordPress-Frontend-Abfrage, wenn Sie sich in einem Kategorie- oder Tag-Kontext befinden. Dann fügt sie die von Ihnen definierten benutzerdefinierten Beitragstypen in die Abfrage selbst ein, so dass sie auf Kategorie- und Tag-Archivseiten angezeigt werden können. Die obige Funktion gibt Inhalte von jedem dieser benutzerdefinierten Beitragstypen zurück: post
, movies
, products
und portfolio
.
Ändern Sie die Namen der benutzerdefinierten Beitragstypen im Array so, dass sie den benutzerdefinierten Beitragstypen entsprechen, die Sie in Ihre WordPress-Archivseiten aufnehmen möchten.
Möchten Sie eine WordPress-Website, die sicher UND schnell ist? Meine Freunde bei WP Engine bieten 3 Monate kostenlos auf alle Jahrespläne. Klicken Sie hier, um Ihr spezielles WP Engine-Angebot in Anspruch zu nehmen!
Und das war's! Sie haben erfolgreich benutzerdefinierte Beitragstypen in Ihre WordPress-Archivseiten eingebunden!
Ich hoffe sehr, dass dieses Tutorial hilfreich war, und vergessen Sie nicht, es zu abonnieren, um Zugang zu weiteren großartigen WordPress-Inhalten zu erhalten!
Hervé
Vielen Dank für den Code!
Und vergessen Sie nicht, die
post
wenn Sie Ihre CPT hinzufügen 😉 .Thomas Griffin
Gern geschehen, Hervé - und in der Tat, Sie müssen gehen
post
damit Ihre Blogeinträge auch weiterhin auf den Archivseiten erscheinen!Michelle
Sehr hilfreich! Ich habe mich gefragt, wie, wenn möglich, könnte man benutzerdefinierte Post-Typen zu bekommen, um in Ihrem Beiträge Feed zusammen mit Beiträgen zeigen.
dh. Ich habe einen Blog mit Blogbeiträgen und einen benutzerdefinierten Beitragstyp für Quizze. Ich möchte, dass sowohl die Quizfragen als auch die Beiträge in meinem Feed "Neueste Beiträge" angezeigt werden.
Thomas Griffin
Hallo Michelle,
Schön, dass Sie es hilfreich fanden! Wenn Sie benutzerdefinierte Beitragstypen in Ihren Haupt-Blog-Feed aufnehmen möchten, können Sie die folgende Funktion verwenden:
Ich hoffe, das hilft!
Michael
Vielen Dank, Thomas! Sehr gerne.
Steven Wilson
Ich danke Ihnen! Ich war eigentlich auf der Suche nach so etwas wie dieses. Kurze Frage....wie bekommen Sie diese benutzerdefinierten Post-Typen eine benutzerdefinierte Archiv-Vorlage zu verwenden? Scheint, wie es die Standard archive.php Vorlage verwendet, aber nicht die, die ich erstellt.... Ressourcen-archive.php.
Thomas Griffin
Danke Steven!
Damit benutzerdefinierte Beitragstypen eine benutzerdefinierte Archivvorlage verwenden können, müssen Sie sicherstellen, dass der Name der Vorlage genau dem Slug des benutzerdefinierten Beitragstyps entspricht. Der Name der Vorlage sieht folgendermaßen aus:
archive-{custom_post_type}.php
. Es scheint, als hätten Sie es verkehrt herum gemacht. Wenn Sie das ändern, sollte es funktionieren.Jubee
Sie haben mir den Tag gerettet. Herzlichen Dank!
Thomas Griffin
Gern geschehen, Jubee!
cc
Du hast ein großes Problem für mich gelöst, vielen Dank, Thomas!