I custom post type di WordPress sono una potente funzionalità. Sono ciò che eleva WordPress da un umile strumento di blogging a content management system e vi offrono l’importantissima flessibilità di cui avete bisogno per creare un sito web su misura.

Ma possono causare confusione: cosa sono esattamente i custom post type di WordPress? In che modo differiscono dai post e dalle pagine standard? Come fate a crearli? E una volta creato un custom post type, come lo aggiungete, come lo visualizzate sul vostro sito e come viene archiviato da WordPress?

In questo articolo, vi mostrerò esattamente come funzionano i custom post type di WordPress. Li metterò a confronto con i tipi di post con cui potreste avere più familiarità, vi insegnerò a crearli e vi mostrerò come utilizzare i template file dei temi per visualizzarli nel vostro sito.

In particolare, tratterò di quanto segue:

Iniziamo!

Cosa Sono i Custom Post Type di WordPress?

Probabilmente è più facile spiegare cosa sono i custom post type in WordPress con un concetto più ampio: i tipi di post.

I tipi di post costituiscono un modo per classificare diversi tipi di contenuto in WordPress. Sto assumendo che voi abbiate già familiarità con i due tipi di post più comuni: post e pagine. Ma quello che potreste non sapere è che WordPress dispone di default di alcuni altri tipi di post.

Tipi di Post Predefiniti di WordPress

WordPress include sette tipi di post:

  • Post
  • Pagine
  • Allegati
  • Revisioni
  • Menu di Navigazione
  • CSS personalizzati
  • Changeset

È probabile che voi non abbiate mai sentito parlare di changeset e potreste usare i CSS personalizzati nel vostro sito, ma non vi è mai venuto in mente che questi potrebbero essere dei tipi di post.

Per la maggior parte degli utenti e sviluppatori di WordPress, gli unici tipi di post di cui ci si deve preoccupare sono i primi cinque: post, pagine, allegati, revisioni e menu di navigazione.

Diamo un’occhiata a ciascuno di questi tipi di post per capirne qualcosa di più.

I Tipi di Post di WordPress: I Post

Il “post” è il tipo di post che utilizzerete di più in WordPress. I post sono contenuti dinamici: progettati per essere aggiornati regolarmente. Potete aggiungervi categorie e tags, il che significa che saranno visualizzati in più pagine di archivio e verranno visualizzati anche sulla vostra home page o sulla pagina del vostro blog. Di solito, i vostri post costituiranno la maggior parte dei contenuti del vostro sito.

Nota: in WordPress, “post” significa due cose. Nel database, un post è un post di qualsiasi tipo, quindi comprenderà pagine, allegati e tutto il resto. Quando la maggior parte di noi parla di post, intendiamo i post nel nostro blog, che appartengono al tipo di post “post”.

I Tipi di Post di WordPress: Le Pagine

Se avete già un sito WordPress, le pagine sono l’altro tipo di contenuto con cui avrete già familiarità. Sono contenuti statici, progettati per rimanere più a lungo dei post e per fornire informazioni su cose che non cambiano così spesso. Buoni esempi sono i vostri dati di contatto o contact details or the la pagina “chi siamo” su un sito web aziendale.

Le pagine non possono avere categorie o tag e non sono progettate per essere visualizzate nelle pagine di archivio. Invece i visitatori vi accederanno tramite il menu di navigazione.

Nota: nel gergo Internet, una pagina può significare qualsiasi tipo di pagina sul vostro sito web. Agli inizi, Internet consisteva esclusivamente di contenuti statici che dovevano essere codificati direttamente scrivendo HTML. Quindi una “pagina web” può essere qualsiasi tipo di pagina sul vostro sito, inclusa una pagina statica in termini di WordPress, una pagina di archivio o un post. In questo articolo, quando mi riferirò alle pagine, intendo la pagina in termini di WordPress, cioè una pagina statica. A volte mi riferirò alle pagine di archivio, ma non sono pagine nel senso che create una pagina per memorizzarle. Lo fa per voi WordPress.

I Tipi di Post di WordPress: Gli Allegati

Un allegato è un elemento multimediale che è stato caricato sul vostro sito. Nel database di WordPress, non è il file multimediale stesso, ma i dati ad esso correlati. Pertanto, ogni allegato avrà un ID univoco e metadati come titolo, descrizione, testo ALT e altro.

Ogni allegato ha anche la sua pagina di allegato con un URL univoco. Potete trovare l’URL tramite la schermata di modifica dei media di quell’allegato:

La schermata di modifica degli allegati in WordPress
La schermata di modifica degli allegati in WordPress

Gli allegati possono essere qualsiasi tipo di upload:, immagini, video, file pdf e altro. Potete accedervi e modificarli tramite l’elemento Media del menu di amministrazione di WordPress, oppure potete caricarli direttamente su post/pagine quando li modificate. Ogni allegato caricato in un post sarà quindi disponibile per la modifica e la visualizzazione tramite il menu Media.

I Tipi di Post di WordPress: Le Revisioni

Ora passiamo a tipi di post leggermente più oscuri.

Ogni volta che salvate una nuova versione di un post, di una pagina, di un allegato o di qualsiasi custom post type, WordPress creerà una revisione che rifletterà quella versione del post (o pagina, ecc.).

Potete visualizzare le revisioni di qualsiasi post o pagina del vostro sito accedendo alla relativa schermata di modifica e aprendo la scheda Documento sul lato destro. Qui vedrete una notifica che vi dice quante revisioni sono presenti per quel post. Di seguito potete vedere uno screenshot di un post che sto modificando che in questo momento ha cinque revisioni.

Le revisioni nella schermata di modifica dei post di WordPress
Le revisioni nella schermata di modifica dei post di WordPress

Se non state utilizzando l’editor Gutenberg, potete accedere alle revisioni scorrendo fino alla fine della schermata di modifica e trovando l’elenco che vedete qui:

Le revisioni nella schermata classica di modifica dei post di WordPress
Le revisioni nella schermata classica di modifica dei post di WordPress

Se fate clic sul box Revisioni, verrete indirizzati a una schermata in cui sono visualizzate le ultime due versioni del vostro post. Da qui potete rivedere le revisioni e tornare a una versione precedente del post.

WordPress creerà molte revisioni nel tempo per il vostro sito, il che significa che il database ne sarà pieno (ecco la guida di Kinsta su come gestire le revisioni per avere prestazioni migliori)! Ma le revisioni sono un tipo di post come un altro, e sono archiviate allo stesso modo – su di questo vi dirò di più tra un po’.

I Tipi di Post di WordPress: I Menu di Navigazione

Anche i menu di navigazione, o più precisamente, gli elementi dei menu di navigazione, sono tipi di post.

Ogni elemento nel menu di navigazione è memorizzato come elemento nel database. Grazie ai suoi metadati, WordPress sa che questa è una voce del menu di navigazione, esattamente dove dovrebbe apparire nel menu di navigazione, e a cosa si collega.

Non potete modificare le voci del menu di navigazione come fareste con altri tipi di post. Invece li potete modificare tramite il Customizer o la schermata dei Menu.

I Tipi di Post di WordPress: I CSS Personalizzati

Se aggiungete CSS personalizzati tramite il Customizer, il vostro lavoro verrà salvato utilizzando questo post type. Un nuovo post (del tipo di post “CSS personalizzato”) verrà salvato come CSS personalizzato relativamente a ciascun tema del vostro sito e WordPress utilizzerà solo quello per il tema attivo.

I Tipi di Post di WordPress: I Changeset

I changeset sono un po’ come le revisioni, ma invece di applicarsi ai post, si applicano al Customizer. Quando fate una modifica utilizzando il Customizer, questa verrà salvata come changeset, in modo simile a una bozza.

Ora che abbiamo esaminato l’intera gamma dei tipi di post di WordPress, scopriamo di più sui custom post type di WordPress.

La differenza tra un Post e un Custom Post Type

Ricapitoliamo rapidamente: un post può essere una delle due cose.

Un tipo di post è un tipo di post (in senso lato) a cui appartiene un determinato contenuto. E un “post” è un tipo di post, come lo è “pagina”, un “allegato” o qualsiasi custom post type che registrate (lo so, è un po’ complicato, ma spiegherò più chiaramente tra un minuto).

D’altra parte, il vostro custom post type non è un tipo di “post” nel senso di un post del blog. È un tipo di post nel senso di tutti i post (di tutti i tipi di post) che sono memorizzati nel database.

I Custom Post Type di WordPress: Utilizzi Comuni

Quindi ora sappiamo cos’è un custom post type. Ma quando potreste averne bisogno? La risposta è: ogni volta che desiderate aggiungere al vostro sito contenuti che non rientrano in uno dei tipi di post predefiniti.

Alcuni esempi comuni di custom post type sono:

Questi sono solo alcuni dei casi d’uso più comuni, ma non sono affatto gli unici. Il mio consiglio, quando si decide se utilizzare un custom post type per qualsiasi nuovo tipo di contenuto, è di porsi questa domanda:

Voglio visualizzare i miei nuovi contenuti nella pagina principale del blog o come pagina statica, oppure voglio essere in grado di mostrarli su una pagina di archivio separata?

In alcuni casi, l’utilizzo di una categoria per separare i vostri nuovi contenuti potrebbe essere sufficiente: magari gestire un blog e volete includere dei case study che potete visualizzare sulla loro pagina (utilizzando una categoria “Case Study”) e mostrarli anche nel blog principale. Ma se volete mantenere i vostri nuovi contenuti separati dai post del vostro blog, ha senso creare un custom post type.

Come Vengono Memorizzati i Tipi di Post da WordPress

I post di un custom post type vengono archiviati nello stesso modo in cui vengono archiviati i post standard (e le pagine, ecc.). Diamo un’occhiata in modo più dettagliato.

Il vostro sito WordPress ha un certo numero di tabelle del database per archiviare contenuti e impostazioni. Il numero minimo di tabelle è 12, ma il vostro sito potrebbe averne di più se avete in esecuzione un Multisite o se è installato un plugin che aggiunge altre tabelle.

Tabelle del database di WordPress
Tabelle del database di WordPress

Nello screenshot qui sopra, potete vedere che ci sono due tabelle che sembrano avere qualcosa a che fare con i post: wp_posts e wp_postmeta.

La tabella wp_posts memorizza tutto il contenuto dei vostri post, di tutti i tipi di post. Quindi non importa se stiamo parlando di un post del blog, di una pagina, una revisione, un allegato o di un custom post type: saranno tutti memorizzati in questa tabella wp_posts.

WordPress sa a quale tipo appartiene ogni post perché ci sarà un valore nel campo post_type della tabella wp_posts. Tale valore corrisponderà al nome del tipo di post. Quindi, quando aggiungete un nuovo post del blog, WordPress aggiungerà un post alla tabella wp_posts, con il post_type di “post”. E se, ad esempio, registrate un custom post type chiamato “product”, ogni nuovo prodotto che create genererà una riga nella tabella wp_posts con “product” come valore del campo post_type.

La tabella wp_postmeta serve alll’archiviazione dei metadati relativi ai vostri post. Ha quattro campi:

  • meta_id: l’id di questo oggetto nella tabella wp_postmeta.
  • post_id: il post a cui corrisponde questo elemento di metadati. Un post può avere più righe nella tabella wp_postmeta.
  • meta_key: la chiave per questo particolare tipo di metadati. Ad esempio, per una pagina statica, una potenziale chiave potrebbe essere page_template, che annota quale template di pagina viene utilizzato.
  • meta_value: il valore del campo. Se una pagina (per utilizzare nuovamente questo esempio) utilizza il template di pagina predefinito, il meta_value qui sarà ‘default’.

Quindi i tipi di metadati memorizzati per un determinato post saranno diversi a seconda del tipo di post.

Non dovete preoccuparvi di quali siano i dati archiviati in wp_posts e quali in wp_postmeta: ma è utile capire che tutti i tipi di post sono archiviati nello stesso posto, perché questo significa che WordPress può gestirli quasi tutti allo stesso modo modo.

In Che Modo i Custom Post Type Interagiscono con Tassonomie Personalizzate e Custom Field

Prima di vedere come registrare un custom post type in WordPress, cerchiamo di capire in che modo un custom post type interagirà con altri tipi di contenuto personalizzati, vale a dire custom taxonomy e custom field.

Custom Taxonomy

In WordPress, le tassonomie vengono utilizzate per classificare i post di qualsiasi tipo. Per i posti standard, le due tassonomie utilizzate sono categorie e tag.

Quando registrate il vostro tipo di post personalizzato, potete scegliere di assegnargli qualsiasi tassonomia o tassonomie esistenti. Potete aggiungere la tassonomia “categoria” quando registrate la tassonomia. A breve vi mostrerò come fare, quando dimostrerò la tecnica per creare un custom post type.

In alternativa, potete creare tassonomie completamente nuove per il vostro custom post type, approccio che è abbastanza comune.

Quindi, ad esempio, se state creando un tipo di post “prodotto” per un sito di ecommerce, potreste creare una tassonomia “reparto” per ordinare i vostri prodotti in dipartimenti del vostro negozio.

Se state creando un tipo di post “evento”, potreste creare una tassonomia “tipo evento”, che potrebbe specificare se si tratta di un concerto, una lettura di poesie o una serata commedia.

Le tassonomie che create dipendono da voi e dal modo in cui desiderate ordinare e visualizzare i post del vostro custom post type.

I Custom Field

Un altro tipo di contenuto personalizzato che avete in WordPress sono i custom field, noti anche come metadati dei post. I custom field sono metadati ulteriori che potete aggiungere a qualsiasi post purché il tipo di post li supporti. Quando registrate un custom post type, potete prevedere il supporto per i custom field con questa riga:

supports => array( ‘custom-fields’ );

Questo viene passato come array, così è possibile aggiungere il supporto per più opzioni.

Quindi, se volete aggiungere metadati al vostro custom post type, come taglie o colori in un negozio di abbigliamento con il tipo di post “prodotto”, dovrete utilizzare un campo personalizzato.

I campi personalizzati sono diversi dalle tassonomie personalizzate perché non li dovreste utilizzare per generare una pagina di archivio.

Ecco un esempio di un negozio di abbigliamento. Avreste una pagina di archivio per ogni esempio di tassonomia del “dipartimento”, ad es. “Donna”, “Uomo” ecc. Immaginate di avere anche un custom field chiamato “Taglia”. Non dovreste creare una pagina di archivio per ogni taglia, in quanto i vostri clienti si aspetterebbero una cosa del genere.

Seguite questa regola come guida per stabilire se dovete utilizzare una tassonomia personalizzata o un custom field per aggiungere dati al vostro post: dovrete visualizzarli in una pagina di archivio?

Più avanti vi mostrerò come creare pagine di archivio per custom post type e tassonomie personalizzate.

Come Aggiungere un Custom Post Type con un Plugin

Quindi ora sapete quali sono i custom post type e sapete di averne bisogno per il vostro sito: come li aggiungete?

Esistono due modi: utilizzando un plugin e programmando manualmente. Cominciamo con il plugin.

Esistono due tipi di plugin che potete utilizzare per registrare un custom post type: il primo registrerà un custom post type al fine di aggiungere funzionalità fornite con il plugin, e il secondo fornirà un’interfaccia che è possibile utilizzare per creare il proprio proprio tipo di post.

Il primo tipo comprende una varietà di plugin, inclusi plugin di ecommerce, plugin per eventi e altro. Cominciamo con uno dei plugin WordPress più popolari, WooCommerce.

Come Utilizzare WooCommerce per Registrare Custom Post Type

WooCommerce è un esempio di plugin che per funzionare registra un custom post type. In questo caso, è il tipo di post “product”.

Lista prodotti in WooCommerce
Lista prodotti in WooCommerce

WooCommerce registra anche alcune tassonomie personalizzate e custom field per organizzare il vostro negozio, comprese le categorie di prodotti e i tag di prodotto. Questi sono diversi dalle categorie e dai tag che usereste per i vostri post del blog.

Come Utilizzare il Plugin Events Calendar per Registrare Custom Post Type

Events Calendar è un altro plugin che utilizza un custom post type. In questo caso, è il tipo di post “event”.

Eventi creati dal plugin The Events Calendar
Eventi creati dal plugin The Events Calendar

Il plugin aggiunge una tassonomia unica per gli eventi: “event category”. Applica anche i normali tag agli eventi, quindi potete utilizzare gli stessi tag che utilizzate per i vostri post del blog.

Come Utilizzare WP Google Maps per Registrare Custom Post Type

Proprio come WooCommerce e The Events Calendar, WP Google Maps è un plugin per mappe di WordPress che registra un tipo di post personalizzato per le mappe.

Una mappa creata dal plugin WP Google Maps
Una mappa creata dal plugin WP Google Maps

Il tipo di post “map” funziona in modo diverso dal tipo di post product o evend dei plugin precedenti, perché non visualizzerete una pagina di archivio di tutte le mappe: invece, il plugin vi fornisce un shortcode per ogni mappa che create, in modo che possiate incorporarle in un post o in una pagina del vostro sito. Ma sebbene non sia possibile visualizzare le mappe nello stesso modo in cui si utilizzerebbero altri tipi di post, si tratta comunque di un tipo di post.

Come Utilizzare il Plugin Custom Post Type UI

Se desiderate registrare il vostro custom post type invece di utilizzarne uno che fa parte della più ampia funzionalità fornita da un plugin come WooCommerce, potete utilizzare un plugin che vi fornisce un’interfaccia progettata per semplificare la registrazione dei custom post type.

Uno di questi plugin è Custom Post Type UI.

Il plugin Custom Post Type UI
Il plugin Custom Post Type UI

Questo plugin vi consente di registrare i vostri custom post type utilizzando le schermate di amministrazione, senza dover scrivere nemmeno una riga di codice.

Vi presenta una serie di schermate che vi consentono di aggiungere tutti gli elementi della registrazione di un tipo di post che dovreste inserire quando utilizzate la funzione register_post_type(). Per aggiungere un nuovo tipo di post con il plugin, andate su a CPT IU > Aggiungi/Modifica Tipi di Contenuto.

Aggiungere un tipo di post con il plugin Custom Post Type UI
Aggiungere un tipo di post con il plugin Custom Post Type UI

Da qui, potete aggiungere un nuovo tipo di post o modificare quelli esistenti che avete già registrato.

Potete modificare le impostazioni del tipo di post o lasciarle ai valori predefiniti. Potete trovare la documentazione completa su tutte le impostazioni e le opzioni dei tipi di post nel Codex di WordPress.

Le impostazioni del plugin Custom Post Type UI
Le impostazioni del plugin Custom Post Type UI

Potete anche utilizzare il plugin per registrare una tassonomia personalizzata e assegnarla al nuovo tipo di post o a qualsiasi tipo di post esistente. E quando utilizzate il plugin per registrare un tipo di post, potete assegnargli eventuali tassonomie durante la registrazione.

Come Utilizzare il Plugin Pods per Registrare Custom Post Type

Il plugin Pods è un altro plugin che vi offre un’interfaccia progettata per permettervi di registrare un custom post type senza scrivere codice.

Pods, inoltre, vi consente anche di estendere i tipi di post esistenti. Quindi potete aggiungere campi extra a un tipo di post o tassonomia esistente e modificarne le impostazioni.

Creare tipi di post con il plugin Pods
Creare tipi di post con il plugin Pods

Pod utilizza un tipo di post (‘pod’) per memorizzare tutte le vostre personalizzazioni e vi consente anche di registrare i vostri tipi di post, un po’ come il plugin Custom Post Type UI, ma con un’interfaccia progettata per guidarvi attraverso le fasi del processo. Questo significa che il plugin può semplificare le operazioni, ma aggiunge molto più codice al vostro sito (e dati al vostro database) di quanto sarebbe necessario se scriveste voi stessi il codice del tipo di post.

In alternativa, se preferite non installare un plugin per gestire la procedura di registrazione dei tipi di post, potete programmarli voi stessi.

Come Registrare il Vostro Custom Post Type in WordPress

Se avete dimestichezza con la scrittura del codice, potete utilizzare la funzione register_post_type() per registrare il vostro custom post type. Questo è il metodo più efficiente.

Le migliori prassi ci dicono di inserire il codice di un custom post type in un plugin, piuttosto che nel vostro tema. Questo perché se doveste cambiare il tema in futuro, non dovete perdere il tipo di post e tutti i post che avete creato con quel tipo. E che se aggiornate il tema in futuro, non perderete il tipo di post.

Esaminiamo i passaggi per registrare il vostro custom post type in WordPress.

Create il Vostro Plugin

Il primo passo è creare il vostro plugin. Nella cartella wp-content/plugins del vostro sito di sviluppo o di staging (non ancora il vostro sito live), aggiungete una cartella per il vostro plugin. All’interno di quella cartella, aggiungi un file PHP. Chiamo il mio kinsta-register-posttype.php.

Suggerimento: mi piace sempre creare un plugin all’interno di una cartella anziché semplicemente aggiungere un file alla cartella wp-content/plugins. In questo modo, se devo aggiungere più file al mio plugin, come includere file, script o stili, ho già una cartella pronta ad ospitarli.

Ora, nel vostro nuovo file php, aggiungi il testo di apertura commentato per il vostro plugin:

<?php
/*
Plugin Name: Register Custom Post Types
Plugin URI: http://rachelmccollin.com
Description: Plugin to register the book post type
Version: 1.0
Author: Rachel McCollin
Author URI:http://rachelmccollin.com
Textdomain: kinsta
License: GPLv2
*/

Questo dà a WordPress (e all’utente) alcune informazioni chiave sul plugin:

  • Come si chiama
  • Dove potete trovare maggiori informazioni
  • Cosa fa
  • Il numero di versione
  • Chi l’ha sviluppato e dove potete trovare altre info sullo sviluppatore
  • Il text domain per l’internazionalizzazione
  • La licenza, che dovrebbe essere sempre GPL.

Quindi il vostro plugin è ora impostato e, se lo desiderate, potete attivarlo nelle schermate di amministrazione. Se non lo attivate, non farà nulla.

Impostazione della Funzione per il Vostro Post Type

Ora iniziamo a creare la funzione per registrare il vostro tipo di post. Nel mio esempio, creerò un tipo di post chiamato “book”, poiché questo è per un ipotetico sito di recensioni di libri. Quello che utilizzerete voi sarà ovviamente diverso e dipenderà dal motivo per cui state registrando il vostro custom post type.

Sotto il testo commentato, aggiungete questo codice:

function kinsta_register_post_type() {

}
add_action( 'init', 'kinsta_register_post_type' );

Questa funzione conterrà tutto il codice necessario per il vostro custom post type. Potreste dover cambiare il nome per aggiungere un vostro prefisso al posto di kinsta_. È buona norma utilizzare un prefisso su tutte le funzioni in modo da non andare in conflitto con il nome di qualche funzione propria del tema o degli altri plugin in esecuzione.

Il resto del codice verrà aggiunto tra le parentesi graffe della funzione.

Definizione delle Etichette per il Vostro Custom Post Type

Ora è il momento di definire le etichette del vostro custom post type. All’interno delle parentesi graffe, aggiungete questo codice:

$labels = array(
 'name' => __( ‘Books’, ‘kinsta’ ),
 'singular_name' => __( 'Book', ‘kinsta’ ),
 'add_new' => __( 'New Book', ‘kinsta’ ),
 'add_new_item' => __( 'Add New Book', ‘kinsta’ ),
 'edit_item' => __( 'Edit Book', ‘kinsta’ ),
 'new_item' => __( 'New Book', ‘kinsta’ ),
 'view_item' => __( 'View Books', ‘kinsta’ ),
 'search_items' => __( 'Search Books', ‘kinsta’ ),
 'not_found' =>  __( 'No Books Found', ‘kinsta’ ),
 'not_found_in_trash' => __( 'No Books found in Trash', ‘kinsta’ ),
);

Dovrete cambiare il codice se il vostro custom post type non è “book”. Ci sono altre etichette che potete usare, ma trovo che quelle qui sopra possano essere sufficienti per le mie esigenze.

Notate che nelle mie etichette sto utilizzando l’internazionalizzazione, in modo che vengano tradotte nella lingua locale degli utenti.

Definizione Degli Argomenti per il Vostro Custom Post Type

Il passo successivo è la definizione degli argomenti, uno dei quali sarà quell’array di etichette che abbiamo già aggiunto.

Sotto le etichette e ancora all’interno delle parentesi graffe, aggiungete questo codice:

$args = array(
 'labels' => $labels,
 'has_archive' => true,
 'public' => true,
 'hierarchical' => false,
 'supports' => array(
  'title',
  'editor',
  'excerpt',
  'custom-fields',
  'thumbnail',
  'page-attributes'
 ),
 'taxonomies' => 'category',
 'rewrite'   => array( 'slug' => 'book' ),
 ‘show_in_rest’ => true
);

Diamo un’occhiata a cosa succede.

  • L’argomento labels è l’array di etichette che abbiamo già definito.
  • 'has_archive' => true abilita un archivio di post type per il custom post type. L’impostazione predefinita è false, quindi preferisco sovrascriverlo per avere la possibilità di utilizzare un archivio del tipo di post (che vi mostrerò come utilizzare a breve).
  • 'public' => true consente di includere il tipo di post nei risultati di ricerca e nelle query personalizzate. Ancora una volta, il valore predefinito è false e questa è una cosa che preferisco ignorare.
  • Il valore ‘hierarchical’ dipenderà da come si desidera utilizzare il custom post type. Se lo impostate su true, il tipo di post si comporterà come le pagine, con una possibile gerarchia e post genitori e figli di qualsiasi post del vostro post type. Se lo imposte su false, si comporterà come un post, senza gerarchia.
  • L’array ‘supports’ definisce una serie di funzionalità dei tipi di post che potete attivare per questo tipo di post. Mi piace assicurarmi che siano attivate funzionalità come immagini in primo piano e custom field.
  • L’argomento ‘taxonomies’ definisce le tassonomie esistenti che si applicano a questo tipo di post. Qui utilizzo la tassonomia ‘category’. Se invece desiderate utilizzare una tassonomia personalizzata, e non l’avete ancora registrata, saltate questa riga e registrate la tassonomia nel tipo di post. Se avete già registrato una custom taxonomy, potete aggiungerla al post utilizzando questa riga.
  • Utilizzo l’argomento ‘rewrite’ perché darò alla tassonomia un nome diverso da quello che voglio utilizzare come slug. Lo spiegherò più dettagliatamente a breve.
  • 'show_in_rest' => true fa sì che il tipo di post sia disponibile per l’API REST e l’interfaccia di Gutenberg. Il valore predefinito è false, il che non ha senso per me: voglio che tutti i miei tipi di post utilizzino la stessa interfaccia di editing!

Quindi questi sono tutti gli argomenti impostati. Ma non abbiamo ancora registrato il tipo di post. È ora di farlo.

Aggiungere la Funzione register_post_type()

Il passaggio finale consiste nel riunire tutto questo nella funzione register_post_type().

Sotto i vostri argomenti, e ancora all’interno delle parentesi graffe, aggiungete questo codice:

register_post_type( 'kinsta_book', $args );

Questo registra il tipo di post ‘kinsta_book’, con gli argomenti che abbiamo già definito.

Ora potreste trovare più facile capire perché ho usato prima l’argomento ‘rewrite’. Mi piace aggiungere un prefisso ai nomi dei miei tipi di post, quindi posso essere sicura che non si scontreranno con nessun tipo di post aggiunto da plugin di terze parti, ma non voglio che il prefisso sia reso pubblico.

Di default, quando WordPress mostra un esempio del vostro tipo di post, utilizzerà il nome del tipo di post nell’URL. Quindi il mio libro intitolato “My Wonderful Book” avrebbe un URL come mysite.com/kinsta_book/my-wonderful-book. Non voglio questo tipo di URL, quindi utilizzo l’argomento ‘rewrite’ per cambiare l’URL in mysite.com/book/my-wonderful-book. Suona molto meglio, eh?

Ora salvate il vostro file e attivate il vostro plugin nel pannello di amministrazione di WordPress. Troverete che un nuovo tipo di post è apparso nel menu di amministrazione.

Il tipo di post "books" nel pannello di amministrazione
Il tipo di post “books” nel pannello di amministrazione

Il tipo di post è ora registrato e pronto per l’uso sul vostro sito. Prendetevi un po’ di tempo per aggiungere alcuni post (ricordatevi che sono i post del vostro custom post type, non i post del blog – WordPress può creare un po’ di confusione a volte!) e poi vedremo come potete visualizzare i vostri post dal vostro custom post type nel front end del vostro sito.

Come Visualizzare i Custom post Type di WordPress nel Vostro Sito

La maggior parte dei custom post type aggiunti al vostro sito funzioneranno come post, il che significa che sono progettati per essere visualizzati nelle pagine di archivio. Magari per visualizzarli state utilizzando una tassonomia personalizzata, oppure avete aggiunto la tassonomia “category” come ho fatto io.

In alternativa, se avete utilizzato un plugin come WooCommerce, che crea dei custom post type per aggiungere funzionalità specifiche al vostro sito, quel plugin potrebbe aggiungere alcune pagine specifiche (come la pagina “Shop2”) progettate per visualizzare il vostro custom post type.

Le quattro opzioni disponibili per visualizzare i custom post type sono:

  • Visualizzare il singolo post (il libro, nel mio esempio)
  • Visualizzare l’archivio completo dei post type, con un elenco di tutti i libri.
  • Visualizzare un archivio di custom taxonomy, utilizzando una tassonomia che avete registrato per il vostro custom post type.
  • Integrare i post del custom post type (ad es. Libri) nell’archivio di una tassonomia esistente, come “category”, o nella pagina principale del blog.

Diamo un’occhiata a ciascuna di queste opzioni.

Attenzione! Se in qualsiasi momento di questa procedura non riuscite ad accedere agli archivi o ai singoli post per il vostro custom post type, è perché WordPress non ha ancora scritto i permalink. Per risolvere questo problema, andate su Impostazioni > Permalink e fate clic sul pulsante Salva modifiche. Questo dirà a WordPress di verificare la presenza di nuovi tipi di post e di creare i relativi URL.

Visualizzazione dell’Archivio dei Tipi di Post

La prima opzione che avete è quella di creare una pagina di archivio di tutti i post nel vostro archivio di custom post type.

Se avete definito ‘has_archive’ come true quando avete registrato il tipo di post, WordPress genererà automaticamente una pagina di archivio per il vostro tipo di post. Potete aggiungerla al menu di navigazione utilizzando il Customizer.

Aggiungere l’Archivio dei Tipi di Post al Menu

Aprite il Customizer e selezionate l’opzione Menu. Selezionate il menu principale e fate clic sul pulsante Aggiungi voci per aggiungere altri elementi al menu.

Aggiungere un elemento di menu nel customizer di WordPress
Aggiungere un elemento di menu nel customizer di WordPress

Selezionate il tipo di post tra le opzioni visualizzate e fate clic non sulla freccia rivolta verso il basso sulla destra del nome. Verrà visualizzato un elenco che include ciascuno dei post che avete aggiunto, oltre a un’opzione che nel mio caso si chiama All books. Cliccateci sopra e verrà aggiunto al vostro menu.

Se poi fate clic su quell’elemento del menu, potete modificare l’etichetta. Preferisco non assegnare l’etichetta “All books”, ma solo “Books”.

Modifica dell'elemento di menu Books
Modifica dell’elemento di menu Books

Notate che potete farlo solo tramite il Customizer: non è possibile nella schermata Menu. Quindi ricordatevi di utilizzare il Customizer per aggiungere il vostro archivio di custom post type al vostro menu.

Personalizzare l’Archivio dei Post Type

WordPress utilizza la gerarchia dei template per identificare il template file del tema da utilizzare per visualizzare l’archivio dei custom post type.

La gerarchia dei template di WordPress
La gerarchia dei template di WordPress

Se il vostro tema dispone di un file archive.php, utilizzerà questo. In caso contrario, utilizzerà index.php.

Se desiderate modificare il modo in cui viene generato l’archivio del custom post type, è possibile creare un template file per l’archivio del tipo di post.

Per uno specifico custom post type, dovete creare un template file chiamato archive-$posttype.php, dove $posttype è il nome del vostro tipo di post. Quindi, per il mio tipo di post books, creerei un file chiamato archive-kinsta_book.php.

Il modo più semplice per creare questo file è creare un duplicato del file archive.php del vostro tema. Rinominatelo e modificatelo in modo che visualizzi l’archivio dei vostri post nel modo che preferite.

Visualizzazione di Singoli Post

I singoli post creati utilizzando un custom post type verranno visualizzati anche utilizzando il primo template file pertinente che si trova nella gerarchia dei template.

Potete andare un po’ oltre con i singoli post rispetto agli archivi: non solo potete creare un template file per il tipo di post (single-$posttype.php), ma potete anche creare un file per un post specifico di quel tipo utilizzando lo slug di quel post (single-$postype-slug.php).

Quindi, se aggiungessi Great Expectations al mio sito di recensioni di libri, potrei creare un file per tutte le recensioni di libri chiamato single-kinsta_book.php, oppure potrei creare un file target per quel libro chiamato single-kinsta_book-great-expectations.php. Se non avessi creato nessuno di questi file, WordPress avrebbe usato di default single.php o (se questo non esiste) singular.php o index.php.

Aggiungere i Custom Post Type alla Pagina Principale del Blog

Di default, la vostra pagina principale del blog includerà solo il tipo di post “post”. E se voleste includere anche il vostro custom post type in quella pagina, in mezzo ai post del blog?

Potete farlo utilizzando l’hook pre_get_posts di WordPress.

Nel plugin in cui avete registrato il tipo di post, aggiungete questo codice:

<?php
function kinsta_books_on_blog_page() {
 
 if ( $query->is_home() && $query->is_main_query() ) {
  $query->set( ‘post_type', array( 'post', 'kinsta_book' );
 }

}
add_action( 'pre_get_posts', 'kinsta_books_on_blog_page' ); ?>

Questo verifica che siamo sulla “home page” (che è la pagina del blog, anche se non è la prima pagina del vostro sito) e che è in esecuzione la query principale (perché, ad esempio, non volete farlo in un widget). In tal caso, questo aggiunge alla query sia post che libri.

Si noti che è necessario includere nell’array sia il tipo di post “post” che il nuovo tipo di post.

Riepilogo

I custom post type di WordPress sono la funzionalità che lo eleva da semplice piattaforma di blogging a vero e proprio content management system. Vi consentono di creare siti complessi e personalizzati che possono fungere da negozi, hub di riferimento, siti multimediali o qualsiasi altra cosa voi abbiate bisogno.

Potete aggiungere custom post type al vostro sito WordPress in tre modi. Potete utilizzare un plugin come WooCommerce, che registra un custom post type correlato alle funzionalità del plugin. Potete utilizzare un plugin come CPT UI o Pods per aggiungere i vostri custom post type. Oppure potete scrivere il vostro plugin e utilizzare la funzione register_post_type() per registrare il tipo di post scrivendo il codice. Qualunque metodo sceglierete, sarete in grado di ottenere molto di più dal vostro sito WordPress.

Rachel McCollin

Rachel McCollin has been helping people build websites with WordPress since 2010. She's a huge fan of self-hosted WordPress and wants to help as many people as possible create an awesome website with it.