WP – Custom post type & metabox

Come ormai detto un’infinità di volte, tutti i contenuti in WP sono considerati dei post. WP è nato come semplice sistema di blog, quindi aveva bisogno della semplice entità “articolo” per funzionare.

Con l’evoluzione di WP a vero e proprio CMS si è continuata a mantenere questa mentalità; solo che ogni nuova entità (pagina, prodotto, portfolio, ecc) viene considerata come un tipo customizzato di post. Le pagine sono dei post di tipo page, i prodotti di tipo product ecc; quello che fa gola a noi è la possibilità di definire nuove tipologie di post che si adattino ai nostri scopi.

Custom post type e GenerateWP

La documentazione WP ha una pagina dedicata a tutto questo discorso, con approfondimenti su come creare e implementare custom post type. Abbiamo però anche uno strumento online che ci velocizza il processo di creazione: generatewp.com. Andando alla voce “Post type” e riempiendo le varie tab con le nostre info, ci viene generato il codice da poter copiare/incollare nel nostro tema.

generatewp.com – creazione custom post type

Durante la creazione, è interessante la tab “options”, che ci permette di selezionare quali metabox e funzionalità il nostro post type supporta (riassunti, immagine principale, revisioni, commenti, ecc).

Una volta riempiti tutti i campi, possiamo far generare il codice e copiarlo nel nostro tema.

Registrazione custom post type

Spiegazione veloce del codice: all’avvio di WP registriamo il post type tramite la funzione register_post_type() a cui vengono passati una serie di opzioni (che definiamo visualmente tramite il sito).

Includere il codice

Per far funzionare il codice, ci basta inserirlo nel file functions.php del nostro tema. Per far ordine nel codice però è meglio riunire i codici di un determinato tipo in file esterni da richiamare. Seguendo le indicazioni della doc di WP, creiamo una cartella inc nella root del nostro tema e richiamarlo.

Custom meta box

Tramite GenerateWp possiamo scegliere quali metabox classici il nostro post type supporta; ma se volessimo mettere dei metabox personalizzati? Il sito ha uno strumento che lo permetterebbe, ma richiede la registrazione di un account.

In effetti la creazione di custom metabox è un processo abbastanza complesso, poichè dobbiamo anche occuparci di salvare i dati che vengono passati, quindi intervenire nei form del bk, validazioni ecc. Considerando anche quanti tipi di campo WP ci mette a disposizioni, c’è da perderci la testa.

Fortunatamente Google ci è amico, e con una semplice ricerca si trovano diversi siti che generano il codice necessario partendo da un compositore visuale. Dopo averne provato qualcuno, la mia scelta è ricaduta sul sito di Jeremy Hyxon; settati tutti i campi che ci interssano, il tool genera uno snippet di codice che possiamo copiare/incollare nel nostro functions.php (anche se, al solito, conviene metterlo su un file esterno per mantenere il codice pulito).

Unico accorgimento: a me non ha supportato il ‘custom post type’ come selettore e aggiungeva le metabox all’articolo. Controllando il codice, è stato facile individuare il punto dove registra le metabox per il post type, e altrettanto facile modificarlo per avere l’effetto desiderato. Soluzione: nella variabile iniziale $config c’è un array con chiave ‘post-type‘; basta scrivere lì i nostri post type personalizzati.

Nell’array sostituiamo post con il nosto post-type