Personalizzare WordPress con i Custom Post

A partire dalla versione 3.0 di WordPress sono stati introdotti i Custom Post Type ovvero la possibilità di creare dei tipi di post o pagine personalizzati per gestire contenuto particolare.

Nell’articolo di oggi mostreremo, attraverso lo sviluppo di un semplice caso reale, come creare ed usare i Custom Post Type. Svilupperemo un semplice gestore di news, da inserire ad esempio in un box all’interno della vostra homepage.

Per comodità scriveremo tutto il codice necessario all’interno del file functions.php, presente in tutti i temi di WordPress (se non c’è createlo), ma nulla vieta nella vostra implementazione finale di inserire il tutto in un plugin per mantenere il codice più pulito ed organizzato.

Creazione e configurazione dei Custom Type

La prima cosa da fare è: dichiarare a WordPress che vogliamo usare i Custom Post Type. Per fare questo aggiungeremo una action di inizializzazione scrivendo:

add_action('init', 'register_my_custom_post_type');

dove register_my_custom_post_type sarà la funzione che verrà invocate all’init di WordPress. Se già avete una funzione registrata a tale scopo potete aggiungere il codice che segue all’interno oppure, come nel nostro caso, scrivere:

function register_my_custom_post_type() {

/* 1) DICHIARAZIONE DELLE ETICHETTE */

$labels = array(
'name' => 'News',
'label' => 'News',
'singular_name' => 'News',
'add_new' => 'Aggiungi Nuova',
'add_new_item' => 'Aggiungi Nuova News',
'edit_item' => 'Modifica',
'new_item' => 'Nuova News',
'view_item' => 'Vedi News',
'search_items' => 'Ricerca News',
'not_found' =>  'Nessuna News',
'not_found_in_trash' => 'Nessuna News nel Cestino',
'parent_item_colon' => ''
);

/* 2) CONFIGURAZIONI */

$args = array(
'labels' => $labels,
'public' => true,
'supports' => array('title', 'editor')
);

/* 3) CHIAMATA ALLA FUNZIONE INTERNA A WP */

register_post_type('news', $args);

}

Descriviamo quindi nel dettaglio le varie parti.

1) Dichiarazione delle etichette

In questa sezione del codice si dichiarano tutte le “traduzioni” che saranno utilizzate per il vostro custom post all’interno delle voci del menù di amministrazione, nei pulsanti e, in generale, in tutte le schermate che trattano il vostro nuovo custom post per le News. Gli screenshot qui in basso valgono più di 100 parole.

Il nuovo tipo di post è già disponibile
Anche il menu di inserimento rapito è stato aggiornato...

2) Configurazioni Custom Post Type

Nella seconda sezione vengono indicate, attraverso un array associativo, una serie di proprietà che andranno ad impostare vari aspetti del nuovo tipo di post. Vediamole in dettaglio:

  • labels – Vedi punto 1)
  • public – Indica sostanzialmente se il nuovo post type è visibile ed utilizzabile nei temi. Il suo valore è il default per una serie di altre proprietà ad esso correlate.
    • publicicly_queryable (indica se è possibile eseguire query)
    • exclude_from_search (indica se includere il post type nei risultati delle ricerche)
    • show_ui (indica se mostrare le interfacce di amministrazione per il post type)
    • show_in_nav_menus (indica se mostrare il post type nell’editor per i menù)
  • supports – un’array che indica le caratteristiche che il nuovo post type avrà nella modalità di edit. Nel nostro caso abbiamo inserito solo il titolo e l’editor di TinyMce, ma è possibile aggiungere l’excerpt, gli autori, la thumbnail, i commenti, i custom fields, ecc

Per maggiori informazioni e dettagli sui vari parametri disponibili vi rimando alla documentazione ufficiale presente qui http://codex.wordpress.org/Function_Reference/register_post_type

3) Creazione effettiva nuovo post type

L’ultima istruzione è una chiamata alla funzione di WordPress register_post_type che prende in input il nome del nuovo custom post type (nel nostro caso news) e l’array degli argomenti creati ai punti precedenti.

A questo punto, accedendo all’area amministrativa di WordPress, saremo già in grado di visualizzare il nuovo menù creato per il nostro nuovo gestore di news supportato dal custom post type news.

Il menu di gestione del nuovo tipo "news"

Clicchiamo su “News” e quindi sul pulsante “Aggiungi Nuova”.

Ci troveremo davanti alla classica schermata di WordPress per l’edit dei post ma saranno visualizzati solo il campo per il Titolo e l’editor TinyMce come dalla seguente figura:

L'edito per il nuovo tipo "news"

Secondo le esigenze del caso, ricordate che questa pagina può essere ulteriormente personalizzata aggiungendo un meta box che contenga dei campi personalizzati. Se già siete familiari con i meta-box vi basterà scrivere:

<?php

add_meta_box(
‘id_univoco’,
‘Titolo Meta Box’,
funzione_per_rendering_html,
‘nome-del-vostro-custom-post-type’ /* nel nostro esempio “news” */
);

?>

Magari l’esempio completo lo potremmo trattare in un futuro post. Se interessati, potete dare un’occhiata a questa pagina http://codex.wordpress.org/Function_Reference/add_meta_box o scrivetelo nei commenti!

Utilizzo nei temi dei custom Type

A questo punto siamo in grado di inserire tutte le news che vogliamo… ma come facciamo a visualizzarle nel nostro sito? Come modificare il tema di WordPress per pubblicare anche le nostre nuove News?

State sintonizzati, questo sarà l’argomento della seconda parte di questo tutorial.

Aggiornamento: la seconda parte, relativa alla modifica del tema WordPress è stata pubblicata.

Questo Guest Post è stato scritto da Alt Design, una web agency specializzata nella realizzazione di siti web basati su WordPress. Potete seguirli nel loro blog dove discutono di Internet Marketing.

19 commenti:

  1. Ciao a tutti i lettori di WordPress Mania,
    scrivo il primo commento per registrarmi alle notifiche.
    Spero che la prima parte del post vi sia piaciuta, se avete domande sono a disposizione.

    Bye

  2. Ottimo tutorial,
    ne ho letti molti sull’argomento ma il modo in cui è stato esposto il tutto è estremamente chiaro e facilmente apprendibile! Spero ne seguano altri,
    magari sulla customizzazione dei custom box e l’implementazione dei dati su tabelle mysql custom.

    Grazie e complimenti ancora!

  3. @Daniele m
    Grazie!

    @Andrew
    Ovvero? Segui il nostro blog di solito?
    Il blog di Alt Design tratta tematiche diverse e rivolte ad un pubblico diverso (molte volte ai nostri clienti). Perciò non possiamo pubblicare articoli troppo tecnici e quindi ci sfoghiamo negli altri blog!
    Forse la chiarezza di esposizione è dovuta proprio al fatto che siamo abituati a scrivere per un pubblico di non tecnici.

  4. add_meta_box(‘crea_dettagli_immobile’, ‘Dettagli immobile’, ‘crea_dettagli_immobile’, ‘immobile’, ‘normal’, ‘high’);

    Vorrei posizionare questo meta box sotto l’editor dell’articolo ma mi si posiziona sempre a lato.
    Ho provato a cambiare gli ultimi 2 parametri ma niente.

  5. Ciao Stefano, l’articolo é molto interessante, però mancano alcune cose sulla destra nell’edit del custom post.
    Ad esempio oltre alla sezione “Pubblica” vorrei aggiungere le sezioni “Categorie” e “Tag articolo”.
    Come si fà?
    Grazie e complimenti davvero per l’articolo!

      1. Ciao Stefano, grazie mille per la risposta.
        Alla fine poi ero riuscito a trovarla da solo proprio vedendo la url che mi hai postato.
        Se non fosse stato per te però non avrei nemmeno sospettato dell’esistenza dei custom post! Ho già in mente come applicarli per il mio sito…. soprattutto per la customizzazione di alcune single.php scritte direttamente da me (quindi solo dall’admin) per sezioni del sito su cui non deve mettere le mani nessun altro (nella mia function metterò l’IF apposito).
        Ciao, grazie e complimenti ancora!

  6. Ciao! Scrivo dal Canada e sn arrivata qui facendo una ricerca sui custom post che mi sn stati consigliati per modificare il mio sito portandolo su WP. Quello che non riesco a capire e’ come possono essere utilizzati per un sito di poesie ed aforismi…. Dovrei creare tag o tassonomia con i titoli o gli autori? Dove potrei vedere un Sito che applichi questi custom post?
    Grazie inifinite
    Lio

  7. Grazie della guida! Bisogna ammettere che i custom post type sono davvero utilissimi, dato che puoi anche cambiarci lo stile e rendere il sito meno tabellare.

Rispondi a Cristiano Annulla risposta