Creare Template Files per Custom Post Type WordPress
Nell’articolo dove abbiamo parlato dei Post Type abbiamo parlato anche della possibilità di creare Custom Post Type, ovvero un tipo di contenuto personalizzato. Abbiamo anche detto che grazie alla loro introduzione WordPress può essere definito un vero e proprio Content Management System (CMS). Quindi è arrivato il momento di vedere come creare Template Files personalizzati per mostrare il contenuto dei Custom Post Type.
Come abbiamo già detto, WordPress seleziona il template file da usare per visualizzare un particolare tipo di contenuto, seguendo la Gerarchia dei Template e usando il primo che trova.
Il primo template file che WordPress cercherà per mostrare un particolare tipo di contenuto è single-{post-type}.php. Dove {post-type} è il nome assegnato al CPT attraverso la funzione register_post_type($post_type, $args ).
Tuttavia, qualora non fosse presente, come possiamo vedere consultando la gerarchia dei template files, i file che saranno cercati ed usati, in ordine gerarchico, sono: single.php, singular.php e index.php.
Di conseguenza, possiamo intuire che in realtà un Custom Post Type non è altro che un particolare tipo di Post. Quindi, per creare un template personalizzato per questo particolare tipo di contenuto, è sufficiente seguire le stesse indicazioni che abbiamo visto quando abbiamo parlato di come creare single.php.
In effetti, supponiamo di avere creato attraverso un CPT chiamato prodotto, un buon punto di partenza per creare un template files per questo particolare Post Type è quello di copiare il contenuto di single.php in single-prodotto.php per poi modificarlo in base alle nostre esigenze.
Se invece dovessimo avere la necessità di creare un template per mostrare più Post di tipo prodotto in un unica pagina, potremmo farlo creando il file archive-{post-type}.php, dove {post-type}, nel nostro caso, va sostituito con prodotto. Anche per archive-{post-type}.phpe, le indicazioni da seguire per realizzare questo tipo di file sono le stesse che abbiamo visto per archive.php.
Come creare Custom Post Type in WordPress
Finora, in questa guida, non abbiamo ancora visto come creare un Custom Post Type poiché la sua creazione è opportuno affidarla ad un plugin piuttosto che ad un tema. La motivazione è ovvia, se si dovesse cambiare tema si perderebbe il Post Type personalizzato creato.
Tuttavia, anche se non è una argomento pertinente per questa guida, è il caso di mostrarti come creare Custom Post Type in WordPress.
Esistono essenzialmente due metodi per creare Custom Post Type in WordPress. Il primo è quello di creare un plugin da zero usando la funzione register_post_type($post_type, $args ). Il secondo consiste nell’usare plugin che ti permettono di creare qualsiasi CPT senza scrivere del codice.
Come creare Custom Post Type creando un proprio plugin
Vediamo ora come creare un CPT creando un semplice plugin.
Supponiamo di voler creare un tipo personalizzato di contenuto chiamato Book con il quale pubblicare nel sito i libri presenti nella nostra libreria. Ogni CPT dovrà contenere il titolo del libro, l’immagine della copertina e la descrizione.
In teoria potremmo aggiungere anche altri campi come autore, data pubblicazione, costo ecc. Ma per ore ci limitiamo a creare del contenuto molto semplice.
Ad ogni modo, se ti vuoi divertire nel creare campi personalizzati puoi usare il plugin Advanced Custom Fields. Il plugin ti permette di creare Custom Fields per qualsiasi Post Type.
A questo punto, nella cartella wp-content/plugins creiamo un cartella con il nome che assegneremo al nostro plugin e al suo interno creiamo un file con estensione php all’interno del quale scriveremo il codice del nostro plugin.
Apriamo il file appena creato con il nostro editor preferito e scriviamo al suo interno il seguente codice:
/*
Plugin Name: {nome del plugin}
Plugin URI: {url della pagina principale del plugin e dove è possibile trovare maggiori info}
Description: {descrizione del plugin} /*nel nostro caso potrebbe essere: plugin per registrare Book Post Type
Version: {numero della versione es. 1.0}
Author: {autore del plugin}
License: GPLv2
*/
Aggiungendo questi commenti e salvando il file, il plugin sarà pronto per essere riconosciuto da WordPress e per essere attivato dal pannello di amministrazione dei plugin.
Subito sotto il commento, scriviamo la funzione per registrare il CPT, che sarà eseguita attraverso l’hook ‘init’.
function {prefisso-personalizzato}_register_post_type() {
// codice della funzione
}
add_action( 'init', '{prefisso-personalizzato}_register_post_type' );
Adesso creiamo l’array che dovrà contenere le etichette e alcuni parametri aggiuntivi necessari per registrare il Book Post Type:
function {prefisso-personalizzato}_register_post_type() {
$labels = array(
'name' => ‘Books’,
'singular_name' =>'Book',
'add_new' => 'New Book',
'add_new_item' => 'Add New Book',
'edit_item' => 'Edit Book',
'new_item' => 'New Book',
'view_item' => 'View Books',
'search_items' => 'Search Books',
'not_found' => 'No Books Found',
'not_found_in_trash' => 'No Books found in Trash'
);
$args = array(
'labels' => $labels, // array contenete le etichette
'has_archive' => true, //abilita un archivio di post type per il custom post type.
'public' => true, //consente di includere il tipo di post nei risultati di ricerca e nelle query personalizzate.
'hierarchical' => false, //il post non ha gerarchia
'supports' => array( //consente di attivare una serie di funzionalità
'title',
'editor',
'excerpt',
'custom-fields',
'thumbnail',
'page-attributes'
),
'taxonomies' => 'category' // definisce quali tassonomie si applicano al Post Type
);
}
add_action( 'init', '{prefisso-personalizzato}_register_post_type' );
In fine aggiungiamo la funzione register_post_type() per registrare il nostro Custom Post Type Book:
function {prefisso-personalizzato}_register_post_type() {
$labels = array(
'name' => ‘Books’,
'singular_name' =>'Book',
'add_new' => 'New Book',
'add_new_item' => 'Add New Book',
'edit_item' => 'Edit Book',
'new_item' => 'New Book',
'view_item' => 'View Books',
'search_items' => 'Search Books',
'not_found' => 'No Books Found',
'not_found_in_trash' => 'No Books found in Trash'
);
$args = array(
'labels' => $labels, // array contenete le etichette
'has_archive' => true, //abilita un archivio di post type per il custom post type.
'public' => true,//consente di includere il tipo di post nei risultati di ricerca e nelle query personalizzate.
'hierarchical' => false, //il post non ha gerarchia
'supports' => array( //consente di attivare una serie di funzionalità
'title',
'editor',
'excerpt',
'custom-fields',
'thumbnail',
'page-attributes'
),
'taxonomies' => 'category' // definisce quali tassonomie si applicano al Post Type
);
register_post_type( ‘book', $args );
}
add_action( 'init', '{prefisso-personalizzato}_register_post_type' );
Per maggiori informazioni sugli argomenti e i parametri da passare a register_post_type(), ti consiglio di leggere la documentazione della funzione.
Come creare un Custom Post Type con Custom Post Type UI
Un ottimo plugin che ti permette di creare Custom Post Type e Tassonomie personalizzate in WordPress senza dover scrivere del codice è Custom Post Type UI.
Custom Post Type UI ti permette di creare rapidamente qualsiasi Post Type personalizzato in modo facile e senza errori.
Questo plugin ti consente di registrare CPT attraverso la schermata di amministrazione, senza dover scrivere nemmeno una riga di codice.
Attraverso una serie di schermate puoi aggiungere tutti gli elementi che dovrebbero essere inseriti con la funzione register_post_type().
Per aggiungere un nuovo tipo di post o modificare uno già esistente, vai su a CPT IU > Aggiungi/Modifica Tipi di Contenuto e aggiungi o modifica il contenuto dei campi che ti verranno mostrati.
Conclusioni – Creare Template Files per Custom Post Type
Come abbiamo detto, a qualsiasi tipo di Post è possibile associare dei campi personalizzati, ovvero dei Custom Fields. Quindi, prima di concludere, voglio mostrarti come puoi fare per visualizzare questi campi.
I Custom Fields sono rappresentati attraverso un associazione di tipo chiave-valore. Il template tag che può essere usato all’interno del loop per mostrare i Custom Fields di un Post è the_meta().
L’output generato da questo tag sarà una lista non ordinata:
<ul class='post-meta'>
<li><span class='post-meta-key'>your_key:</span> your_value</li>
</ul>
In alternativa puoi usare le funzioni get_post_custom() e get_post_meta(), per ottenere un array multidimensionale contenente i custom field del Post. Quindi, puoi personalizzare il modo di come mostrare i Custom Fields semplicemente accedendo alle varie voci dell’array.
I Custom Post Type sono molto potenti e permettono di creare qualsiasi tipo di contenuto e quindi di usare WordPress per creare qualsiasi tipo di sito. Per esempio, in un e-commerce possono essere usati per per creare il tipo Prodotto, in altri siti possono essere usati per creare un Portfolio e così via…
Continueremo ancora a parlare di Template File, vedremo insieme come realizzare template parziali e template che vengono usati quando viene chiesto del contenuto non presente sul sito.
Continua a seguirci e soprattutto iscriviti alla nostra pagina Facebook. Inoltre, se vuoi farmi qualche domanda, chiedere informazioni o darmi qualche consiglio, puoi contattarmi tramite la nostra pagina Facebook o via email.
Prossimo articolo -> Creare template files parziali in WordPress
Attachment Template Files <- Articolo precedente
Indice argomenti della guida
- Introduzione: Come creare un tema per WordPress
- Cos’è un tema WordPress
- I template files di WordPress
- Cosa sono i Post Type di WordPress
- Struttura e organizzazione dei file in un tema WordPress
- A cosa serve style.css e come installare un tema in WordPress
- I template tags di WordPress
- Come funziona il Loop di WordPress
- Functions.php – Aggiungere caratteristiche e funzionalità a WordPress
- Come aggiungere javascript e css in WordPress
- Categorie, Tags e Tassonomie
- Template files per Articoli
- Creare un template diverso per ogni pagina WordPress
- Attachment Template Files
- Creare Template Files per Custom Post Type WordPress
- Creare template files parziali in WordPress
- Template per le Tassonomie in WordPress