Template tassonomia per custom post type
Ho creato un custom post type portfolio
e una taxonomy
naturalmente.
function taxonomies_portfolio() {
$labels = array(
'name' => _x( 'Categorie portfolio', 'nome generale tassonomia' ),
'singular_name' => _x( 'Categorie portfolio', 'nome singolare tassonomia' ),
'search_items' => __( 'Cerca categorie portfolio' ),
'all_items' => __( 'Tutte le categorie portfolio' ),
'parent_item' => __( 'Categoria genitore' ),
'parent_item_colon' => __( 'Categoria genitore:' ),
'edit_item' => __( 'Modifica categoria portfolio' ),
'update_item' => __( 'Aggiorna categoria portfolio' ),
'add_new_item' => __( 'Aggiungi categoria portfolio' ),
'new_item_name' => __( 'Nuova categoria portfolio' ),
'menu_name' => __( 'Categorie' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => true,
'rewrite' => true
);
register_taxonomy( 'portfolio_category', 'portfolio', $args );
}
add_action( 'init', 'taxonomies_portfolio', 0 );
È possibile creare 1 file template per visualizzare tutti gli elementi di una singola categoria? Ho provato a creare un taxonomy.php
ma senza successo. Qual è il nome corretto del template da utilizzare?
Secondo la pagina del Codex di WordPress sulla Gerarchia dei Template, puoi creare un file template con il nome taxonomy-portfolio_category.php
. WordPress lo utilizzerà per visualizzare l'archivio per quella tassonomia. Puoi anche usare taxonomy-portfolio_category-{term_name}.php
per creare template specifici per singoli termini nella tua tassonomia.

Grazie Manny, ma è possibile usare un unico template per tutte le categorie invece di crearne 3 separati per 3 categorie diverse?

Sì, come nella prima parte della mia risposta: taxonomy-portfolio_category.php

Ok, grazie Manny - ma purtroppo non ha funzionato, c'è ancora qualcosa da considerare?

Ho testato "taxonomy-portfolio_category.php", ma viene visualizzato archive.php invece.

Non è necessario utilizzare i template standard di WordPress per gestire i diversi template delle tassonomie per lo stesso tipo di post personalizzato.
Supponiamo che tu abbia: 1) il CPT portfolio
con 1) la tassonomia pcat
e 3) i termini 'sites', 'apps' e 'design' creati in questa tassonomia (qui vengono mostrati gli slug).
Caso 1: Potresti voler mostrare lo stesso template per ciascuna di queste tassonomie pcat
. Basta utilizzare lo stesso template portfolio-single.php
con il codice che mostra qualsiasi singolo record di portfolio
in modo uniforme.
Caso 2: Ora supponiamo che tu voglia mostrare un template diverso per ogni record del CPT portfolio
a seconda del termine della tassonomia pcat
('sites', 'apps', 'design', 'qualunque') assegnato a quel record.
Puoi farlo utilizzando comunque lo stesso portfolio-single.php
con un template parziale aggiuntivo per ogni termine di pcat
.
Il tuo portfolio-single.php
deve contenere questo codice:
<?php
get_header();
// Qui ottieni il record specifico del CPT `portfolio`.
global $post;
// Ottieni l'array dei termini della tassonomia 'pcat' associati al record
// e prendi lo slug del primo termine solo (per brevità)
$txslug = get_the_terms($post, 'pcat')[0]->slug;
// Prepara dinamicamente il nome del file
$filename = get_template_directory() . '/partials/_portfolio-single-'.$txslug.'.php';
// Verifica se il file esiste ed è leggibile
if (is_readable($filename)) {
// Il caso in cui hai creato il sotto-template parziale per il particolare termine `pcat`.
include get_template_directory() . '/partials/_portfolio-single-'.$txslug.'.php';
} else {
// Il caso per tutti gli altri termini della tassonomia `pcat`.
include get_template_directory() . '/partials/_portfolio-single-other.php';
}
get_footer();
Come puoi vedere dal codice sopra, dovrai creare i rispettivi sotto-template parziali per ogni termine della tassonomia pcat
che assegni ai tuoi post e che gestiranno effettivamente l'aspetto del termine della tassonomia.
Oppure / e creare il file /partials/portfolio-single-other.php
per gestire tutti i termini che vuoi mostrare in modo uniforme.
Questo manterrà i file del tuo tema ben organizzati e, senza alcun costo di codice, ti permetterà di gestire in modo flessibile l'aspetto dei diversi termini della tassonomia.
NB: Non dimenticare di ridefinire global $post;
all'inizio dei tuoi template '/partials/_portfolio-single-'.$txslug.'.php'
. Avrai accesso all'oggetto CPT che vuoi mostrare senza costi aggiuntivi.
