Creare un Custom Post Type in Wordpress - Ennio Danese
custom post type hero

Creare un Custom Post Type in WordPress

Non tenerlo solo per te :)

Come si fa a creare un Custom Post Type in WordPress?  Questa è una delle prime domande che viene spontanea quando ci si addentra nel mondo di WordPress, ragione per cui la risposta non può rimanere uno dei misteri della vita!

In realtà se ci si limita ad usare WordPress per la realizzazione classica di un sito web, quello fatto dal cuggino di turno per intenderci, raramente sarà necessario conoscere cosa siano i custom post type e come molto spesso sia necessario avvalersi della loro funzione.

Ma veniamo al dunque e cerchiamo di spiegare cosa sono queste entità, si perché è di questo che possiamo parlare quando nominiamo i custom post type.

Quando accediamo al backend di WordPress abbiamo a che fare principalmente con due tipologie di contenuti: le pagine e gli articoli.  Fino a quando non avremo bisogno di altro,  questi contenuti saranno più che sufficienti.

In realtà tutto si complica quando vogliamo portare ad un livello successivo il nostro sito, avendo magari la necessità di trasformarlo in una sorta di applicazione.

Riporto uno degli esempi più classici che ci sono in rete per spiegare il funzionamento dei custom post type perché in realtà è il più semplice.

Immaginiamo di voler creare la tipologia libri all’interno della nostra installazione di WordPress per poter gestire una sorta di libreria online o magari un blog con le recensione sui libri.

A questo punto possiamo dedicare una sezione apposita ai libri, lasciandola separata dalle pagine e gli articoli che sono le entità principali di WordPress. Ecco quindi che possiamo affidarci all’uso dei custom post type andandone a creare proprio uno in questo momento.

Creare un nuovo custom post type

Per poter definire un nuovo custom post type occorrerà prima di tutto utilizzare la funzione register_post_type();

Per inserire questa funzione, dovremo recarci nel file functions.php che si trova nella cartella del nostro tema in uso.

Fatto ciò, dal nostro editor di testo andiamo ad inserire il seguente codice:

<? function portfolio_custom_post() { // creazione (registrazione) del custom post type register_post_type( 'libri', /* nome del custom post type */ // aggiungiamo ora tutte le impostazioni necessarie, in primis definiamo le varie etichette mostrate nei menù array('labels' => array(
            'name' => 'Libri', /* Nome, al plurale, dell'etichetta del post type. */
            'singular_name' => 'Libro', /* Nome, al singolare, dell'etichetta del post type. */
            'all_items' => 'Tutti i Libri', /* Testo mostrato nei menu che indica tutti i contenuti del post type */
            'add_new' => 'Aggiungi nuovo', /* Il testo per il pulsante Aggiungi. */
            'add_new_item' => 'Aggiungi nuovo libro', /* Testo per il pulsante Aggiungi nuovo post type */
            'edit_item' => 'Modifica Libro', /*  Testo per modifica */
            'new_item' => 'Nuovo Libro', /* Testo per nuovo oggetto */
            'view_item' => 'Visualizza Libro', /* Testo per visualizzare */
            'search_items' => 'Cerca Libro', /* Testo per la ricerca*/
            'not_found' =>  'Nessun Libro trovato', /* Testo per risultato non trovato */
            'not_found_in_trash' => 'Nessun libro trovato nel cestino', /* Testo per risultato non trovato nel cestino */
            'parent_item_colon' => ''
            ), /* Fine dell'array delle etichette */   
            'description' => 'Raccolta di Libri del portale', /* Una breve descrizione del post type */
            'public' => true, /* Definisce se il post type sia visibile sia da front-end che da back-end */
            'publicly_queryable' => true, /* Definisce se possono essere fatte query da front-end */
            'exclude_from_search' => false, /* Definisce se questo post type è escluso dai risultati di ricerca */
            'show_ui' => true, /* Definisce se deve essere visualizzata l'interfaccia di default nel pannello di amministrazione */
            'query_var' => true,
            'menu_position' => 8, /* Definisce l'ordine in cui comparire nel menù di amministrazione a sinistra */
            'menu_icon' => get_stylesheet_directory_uri() . '/img/custom-post-icon.png', /* Scegli l'icona da usare nel menù per il posty type */
            'rewrite'   => array( 'slug' => 'libri', 'with_front' => false ), /* Puoi specificare uno slug per gli URL */
            'has_archive' => 'true', /* Definisci se abilitare la generazione di un archivio (equivalente di archive-libri.php) */
            'capability_type' => 'post', /* Definisci se si comporterà come un post o come una pagina */
            'hierarchical' => false, /* Definisci se potranno essere definiti elementi padri di altri */
            /* la riga successiva definisce quali elementi verranno visualizzati nella schermata di creazione del post */
            'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'trackbacks', 'custom-fields', 'comments', 'revisions', 'sticky')
        ) /* fine delle opzioni */
    ); /* fine della registrazione */
} 
// Inizializzazione della funzione
add_action( 'init', 'portfolio_custom_post');
?>

Una volta inserito il codice sopra riportato, non ci resta che salvare il file functions.php, tornare nel nostro WordPress, aggiornare il backend e noteremo così nella sidebar di sinistra il nostro nuovo custom post type.

custom post type

Visualizzare il custom post type nel frontend

Per richiamare il post type personalizzato nel frontend, e soprattuto dargli un nuovo look, dovremo ritornare all’interno del nostro tema ed intercettare i file archive.php e single.php, duplicarli e rinominarli come archive-nomeposttype.php e single-nomeposttype.php seguendo gli standard indicati nella gerarchia di wordpress. A questo punto non ci resta che andare a modificare l’aspetto della pagina secondo i nostri gusti ed il gioco è fatto.

Questo è il metodo che ho utilizzato per creare il mio primo custom post type. Potrebbe sembrare complicato, ma effettivamente i commenti dovrebbero semplificare la comprensione del tutto! Se avete qualcosa da segnalare o se avete fatto qualcosa di diverso, fatemelo sapere pure nei commenti e come al solito…

Buon Codice a Tutti!


Non tenerlo solo per te :)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.