web-dev-qa-db-de.com

Benutzerdefinierte Beitragstypen auf Kategorieseiten

Ich arbeite mit einem benutzerdefinierten Beitragstyp, der die normalen WordPress-Kategorien verwendet.
Ich kann meine Kategorie-Vorlage so ändern, dass meine benutzerdefinierten Beitragstypen genau so angezeigt werden, wie ich sie haben möchte.

Das Problem ist, wenn ich das mache, sind auch normale Blog-Posts betroffen.

Natürlich kann ich entweder normale Blog-Posts oder den Post-Typ auf nur eine Kategorie beschränken und eine Kategorie-ID.php erstellen, um nur mit dieser Kategorie zu arbeiten.

Aber ich frage mich, ob es eine flexiblere Lösung gibt?
Ist es möglich, Kategorienvorlagen zu erstellen, die spezifisch für Beitragstypen sind, d. H. Eine zum Anzeigen von Beiträgen, eine zum Anzeigen benutzerdefinierter Beitragstypen usw.?

ist das überhaupt möglich Wenn nicht, wie geht das am besten?

6

Für benutzerdefinierte Beitragstypen mit benutzerdefinierter Taxonomie können Sie eine Vorlage für diese Taxonomie erstellen. Ihre benutzerdefinierte Taxonomie-Vorlage würde taxonomy-{taxonomy}.php heißen. Wenn Ihre Taxonomie beispielsweise "Kochkategorien" heißt, geben Sie Ihrer Datei den Namen taxonomy-cooking-categories.php.

Weitere Informationen zu Vorlagendateien für spezielle Taxonomiearchive finden Sie im Codex hier: http://codex.wordpress.org/Template_Hierarchy#Custom_Taxonomies_display

6
eileencodes

Sie können den Beitragstyp wie folgt festlegen: Angenommen, Sie haben einen category.php für reguläre Beiträge und einen your-custom-type-category.php für Ihre benutzerdefinierten Beiträge. Fügen Sie diesen dann ganz oben in Ihre reguläre category.php ein.

<?php if (have_posts()){
    the_post();
    if( 'your_custom_type' == get_post_type( $post ) ) {
        rewind_posts();
        get_template_part('your-custom-type-category');
        exit();
    }
    rewind_posts();
}
?>

wenn eine Kategorie angefordert wird, sucht sie nach Ihrem benutzerdefinierten Beitragstyp. Wenn sie gefunden wird, wird Ihr your-custom-type-category.php als Vorlage verwendet und alle regulären Beiträge werden unverändert mit category.php angezeigt.

Hoffe das hilft

4
Bainternet

Hallo @Kelvin Jayanoris:

Gibt es einen Grund, warum Sie den Wert von $post->post_type nicht einfach mit einer if..elseif-Anweisung in Ihrer Schleife testen können:

<?php if ($post->post_type=='foo'): ?>

   Put HTML for 'foo' post type here...

<?php else if ($post->post_type=='bar'): ?>

   Put HTML for 'bar' post type here...

<?php else if ($post->post_type=='post'): ?>

   Put HTML for 'post' post type here...

<?php endif; ?>

Oder wenn es einen Grund gibt, warum Sie keine eigene Hierarchie von Vorlagendateien in Form von Dateinamen wie post-foo.php, post-foo.php, post-post.php erstellen können, auch innerhalb Ihrer Schleife? Dieser wie der Code könnte das dafür tun:

<?php include("post-{$post->post_type}.php"); ?>
1
MikeSchinkel