WordPress custom post types

WordPress custom post types

Dopo la personalizzazione delle categorie, nell’articolo di questa settimana scopriremo cosa siano i Custom Post type, artefici di aver trasformato WordPress in un CMS a tutti gli effetti. Introdotti dalla versione 2.9, i CPT hanno agevolato gli sviluppatori a creare nuovi oggetti senza la necessità di particolari hack. Esattamente come per le pagine e i post, avremo a disposizione un nuovo menu nel pannello di amministrazione, pagine di modifica dedicate e moltissime altre utilities che ci consentiranno di strutturare al meglio i nostri contenuti.

Che cosa sono i Custom Post Types?

A livello tecnico, i CPT non sono altro che post con un diverso valore nel campo post_type del database. Post ha come post_type post, pagina page e cosi via.
In parole povere, i CPT sono dei contenuti personalizzati gestibili da WordPress.
I Custom Post Types sono dei salvavita quando si tratta di siti di dimensioni notevoli ma possono essere comunque sfruttati anche per casi più semplici. Supponiamo ad esempio di avere un sito autobiografico e di voler inserire un portfolio: una separazione dai post puri potrebbe essere una scelta sensata.

Come creare un Custom Post Type

Per cominciare a sviluppare il nostro CPT possiamo scegliere se creare un plugin apposito oppure sfruttare il file functions.php del nostro tema. La prima scelta è sicuramente ideale per sfruttarlo agevolmente in siti futuri o condividerlo in rete ma per una prova veloce possiamo tranquillamente optare per la seconda scelta.

Analizziamo innanzittutto il seguente codice:

function custom_post_portfolio() {
    register_post_type( 'portfolio', array());
}
add_action( 'init', 'custom_post_portfolio');

Queste righe creano un nuovo post type molto basilare: non è pubblico, non è visibile dal pannello di amministrazione, non ha nessuna customizzazione. Per rendere il nostro nuovo post type adatto alle nostre necessità, esistono numerosi parametri utili a tal scopo. Nel nostro caso aggiungiamo i seguenti:

function custom_post_portfolio() {
    $labels = array(
        'name' => 'Lavori',
        'singular_name' => 'Lavoro',
        'add_new' => 'Aggiungi',
        'add_new_item' => 'Aggiungi nuovo lavoro',
        'edit_item' => 'Modifica lavoro',
        'new_item' => 'Nuovo lavoro',
        'all_items' => 'Tutti i lavori',
        'view_item' => 'Visualizza lavoro',
        'search_items' => 'Cerca lavori',
        'not_found' =>  'Nessun lavoro trovato',
        'not_found_in_trash' => 'Nessun lavoro trovato nel cestino',
        'menu_name' => 'Portfolio'
    );
    $args = array(
        'labels' => $labels,
        'description' => 'Contiene i lavori sviluppati',
        'public' => true,
        'menu_position' => 2,
        'rewrite' => array('slug' => 'portfolio'),
        'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ),
        'has_archive' => true,
    );
    register_post_type( 'portfolio', $args );
}
add_action( 'init', 'custom_post_portfolio' );
  • labels: definisce le diverse stringhe di un CPT.
  • description: una descrizione del CPT, cosa fa e perché lo utilizziamo.
  • public: se settato a true, aggiunge l’interfaccia grafica di gestione nel pannello di amministrazione.
  • menu_position: definisce la posizione del menu nel backend
  • rewrite: definisce lo slug con cui raggiungere la pagina archivio del CPT: nel nostro caso http://miosito/portfolio
  • supports: definisce quali campi possono essere utilizzati nella creazione del post.
  • has_archive: se settato a true, genera una pagina con una lista dei nostri CPT.

Per una lista completa vi consiglio di consultare la reference ufficiale di WordPress.

Fatta questa operazione, nel vostro backend dovrebbe essere comparsa la nostra nuova voce di menu, in cui possiamo fare tutte le operazioni che desideriamo.

NB: Qualora aveste scelto per il vostro sito una struttura dei permalink diversa da quella di default,sarà necessario aggiornarli entrando in Impostazioni -> Permalink e cliccare sul pulsante “Salva modifiche” per visualizzare correttamente i CPT. Spero che questa dritta vi risparmi un po’ di mal di testa 🙂

Personalizzazione del template per i post-type

Come per le pagine e le categorie possiamo modificare l’aspetto dei nostri nuovi post-type: basta così creare nella cartella del nostro tema il file single-portfolio.php per la pagina singola di un lavoro e il file archive-portoflio.php per la visualizzazione di più lavori. Modifichiamo i template come più ci aggradano e andiamo in miosito/portfolio: se tutto è andato a buon fine, avremo la nostra pagina archivio personalizzata.