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?
p2or
Sì, come nella prima parte della mia risposta: taxonomy-portfolio_category.php
Manny Fleurmond
Ok, grazie Manny - ma purtroppo non ha funzionato, c'è ancora qualcosa da considerare?
p2or
Ho testato "taxonomy-portfolio_category.php", ma viene visualizzato archive.php invece.
p2or
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.