Template tassonomia per custom post type

16 feb 2015, 18:46:21
Visualizzazioni: 27.4K
Voti: 3

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?

6
Commenti

Ho creato un CPT portfolio e le sue categorie portfolio_categories, posso vedere tutti i portfolio usando archive-portfolio.php. E puoi vedere gli elementi della categoria desiderata usando archive-portfolio_category.php poiché la tua tassonomia è portfolio_category.

Mayeenul Islam Mayeenul Islam
16 feb 2015 18:58:06

@MayeenulIslam Grazie per la tua risposta. Ho creato un "archive-portfolio_category.php" e un "taxonomy-portfolio_category.php" senza successo. Il mio plugin WhatTheFile continua a restituire: archive.php

p2or p2or
16 feb 2015 19:06:02

La funzione di registrazione della tassonomia dovrebbe essere così: register_taxonomy( 'portfolio_category', array( 'portfolio' ), $args ); e il parametro rewrite può essere così: 'rewrite' => array( 'slug' => 'portfolio-categories' ),

Mayeenul Islam Mayeenul Islam
16 feb 2015 19:09:11

Spiacente, nel tuo caso la riscrittura sarà: 'rewrite' => array( 'slug' => 'portfolio-category' ),, non dimenticare di provare anche archive-portfolio-category.php (con trattino). Perché non l'ho provato. :)

Mayeenul Islam Mayeenul Islam
16 feb 2015 19:16:01

@MayeenulIslam Grazie per il tuo sforzo - ho testato il tuo codice, aggiornato i Permalink, ma è ancora lo stesso -> archive.php

p2or p2or
16 feb 2015 19:19:16
Mostra i restanti 1 commenti
Tutte le risposte alla domanda 2
8

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.

16 feb 2015 18:52:38
Commenti

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

p2or p2or
16 feb 2015 18:58:23

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

Manny Fleurmond Manny Fleurmond
16 feb 2015 19:08:21

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

p2or p2or
16 feb 2015 19:13:17

Cosa non funziona? Come lo stai testando?

Manny Fleurmond Manny Fleurmond
16 feb 2015 19:20:13

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

p2or p2or
16 feb 2015 19:21:23

Usando quale URL?

Manny Fleurmond Manny Fleurmond
16 feb 2015 19:22:08

Buona idea, sto usando: url/categoria/libri/ È sbagliato?

p2or p2or
16 feb 2015 19:23:55

Per la tua tassonomia, dovrebbe essere portfolio_category/libri

Manny Fleurmond Manny Fleurmond
16 feb 2015 19:26:50
Mostra i restanti 3 commenti
0

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.

23 gen 2018 07:55:45