it-swarm.com.de

Benutzerdefinierte Taxonomie-Vorlage für Beitragstypen

Ich habe einen benutzerdefinierten Beitragstyp portfolio und natürlich eine taxonomy erstellt.

function taxonomies_portfolio() {
    $labels = array(
        'name'              => _x( 'Portfolio categories', 'taxonomy general name' ),
        'singular_name'     => _x( 'Portfolio categories', 'taxonomy singular name' ),
        'search_items'      => __( 'Query portfolio categories' ),
        'all_items'         => __( 'All portfolio categories' ),
        'parent_item'       => __( 'Parent category' ),
        'parent_item_colon' => __( 'Parent category:' ),
        'edit_item'         => __( 'Edit portfolio category' ), 
        'update_item'       => __( 'Update portfolio category' ),
        'add_new_item'      => __( 'Add Edit portfolio category' ),
        'new_item_name'     => __( 'New portfolio category' ),
        'menu_name'         => __( 'Categories' ),
    );
    $args = array(
        'labels' => $labels,
        'hierarchical' => true,
        'rewrite' => true
    );
    register_taxonomy( 'portfolio_category', 'portfolio', $args );
}
add_action( 'init', 'taxonomies_portfolio', 0 );

Ist es möglich, 1 Vorlagendatei zu erstellen, um alle Elemente einer einzelnen Kategorie anzuzeigen? Ich habe versucht, einen taxonomy.php zu erstellen, aber ohne Erfolg. Was ist der richtige Vorlagenname für die Arbeit?

2
p2or

Entsprechend der Wordpress Codex-Seite auf Vorlagenhierarchie erstellen Sie eine Vorlagendatei mit dem Namen taxonomy-portfolio_category.php. WordPress verwendet dies, um das Archiv für diese Taxonomie anzuzeigen. Sie können auch taxonomy-portfolio_category-{term_name}.php verwenden, um Vorlagen für bestimmte Begriffe in Ihrer Taxonomie zu erstellen.

3
Manny Fleurmond

Sie müssen nicht die WordPress-Standardvorlagen verwenden, um die Vorlagen mehrerer Taxonomien für denselben benutzerdefinierten Beitragstyp zu verwalten.

Angenommen, Sie haben Ihre: 1) portfolio CPT mit der 1) pcat Taxonomie und 3) "Sites", "Apps" und "Design" -Begriffe, die in dieser Taxonomie erstellt wurden (hier werden Slugs angezeigt).

Fall 1: Möglicherweise möchten Sie dieselbe Vorlage für eine dieser pcat-Taxonomien anzeigen. Verwenden Sie einfach dieselbe einzelne portfolio-signle.php-Vorlage mit dem Code, der einen einzelnen portfolio-Datensatz auf einheitliche Weise anzeigt.

Fall 2: Angenommen, Sie möchten für jeden portfolio-CPT-Datensatz eine andere Vorlage anzeigen, abhängig vom Taxonomiebegriff pcat ('Sites', 'Apps', 'Design', 'Was auch immer'), der diesem Datensatz zugewiesen wurde.

Sie können dies weiterhin mit demselben portfolio-signle.php mit zusätzlicher Teilvorlage für jeden pcat-Ausdruck tun.

Ihr portfolio-signle.php muss diesen Code enthalten:

<?php
get_header();
// Here you get the particular record of the `portfolio` CPT.
global $post;
// Get the array of 'pcat' taxonomy terms attached to the record
// and take the slug of first term only (just for brevity)
$txslug = get_the_terms($post, 'pcat')[0]->slug;
// Dynamically prepare the file name
$filename = get_template_directory() . '/partials/_portfolio-single-'.$txslug.'.php';
// Check if the file exists & readable
if (is_readable($filename)) {
    // The case when you  created the sub-template partial for the particular `pcat` term.
    include get_template_directory() . '/partials/_portfolio-single-'.$txslug.'.php';
} else {
    // The case for all other `pcat` taxonomy terms.
    include get_template_directory() . '/partials/_portfolio-single-other.php';
}
get_footer();

Wie Sie aus dem obigen Code ersehen können, müssen Sie für jeden pcat-Taxonomiebegriff, den Sie Ihren Posts zuweisen, die entsprechenden Teilvorlagen erstellen, die das Aussehen des Taxonomiebegriffs übernehmen.

Oder/und erstellen Sie den /partials/portfolio-single-other.php, um alle Begriffe zu behandeln, die einheitlich aussehen sollen.

Auf diese Weise bleiben Ihre Themendateien übersichtlich und Sie können das Erscheinungsbild der verschiedenen Taxonomiebegriffe ohne Codekosten flexibel verwalten.

NB: Vergessen Sie nicht, global $post; oben in Ihren '/partials/_portfolio-single-'.$txslug.'.php'-Vorlagen neu zu deklarieren. Sie erhalten den Zugriff auf das CPT-Objekt, das Sie anzeigen möchten, ohne zusätzliche Kosten.

0
bob-12345