"Custom Post Types" di WordPress: strutturiamo le informazioni con i Tipi di Post Personalizzati

Usabilità & Comunicazione, Web Development
tipi post personalizzati

Una parte molto importante della progettazione di un sito web è comprendere quali tipi di informazioni vuoi pubblicare nel sito stesso.

Esistono infatti innumerevoli tipi di contenuti: articoli di un blog, pagine aziendali, eventi, offerte, prodotti, sale di un convegno, relatori del convegno, sale di un cinema, film proiettati, registi, attori, servizi, ecc.

Anche solo lontanamente pensare di gestire questi tipi di contenuti creando pagine in WordPress mi fa venire la pelle d'oca.

In questo articolo ti spiegherò perché mi scandalizzo tanto e come strutturare l'informazione con tipi di post personalizzati!

Ogni tipo di contenuto è un mondo a parte

Convieni con me che ogni tipo di informazione rappresenta un mondo a parte sotto differenti aspetti:

  • Diversi attributi: un articolo è composto da un titolo, un corpo, categorie e tags. Ma che dire di un prodotto? Questo può avere svariati attributi come il prezzo, il codice del fornitore, quello di magazzino e molto altro.
  • Diversa categorizzazione: è molto utile suddividere la informazioni in categorie ma ti rendi conto che ogni tipo di informazione ha categorie differenti! Un film potrebbe essere catalogato in base al genere, mentre invece le aziende in un territorio in base al settore merceologico.
  • Amministrazione: creare un articolo è una cosa, creare un prodotto è ben altra. Per un articolo potresti pensarci tu o un copywriter, mentre i prodotti vengono inseriti dal magazziniere o addirittura prelevati in automatico dal gestionale usato per il magazzino.
  • Visualizzazione all'Utente: Eccoci nuovamente all'Utente. Se il nostro lavoro di organizzazione dell'informazione è stato fatto adeguatamente, l'Utente si ritroverà a navigare in una struttura molto semplice, ben organizzata ed utilizzabile per ottenere informazioni. Se invece avessimo usato per tutti i nostri tipi di informazione solo ed esclusivamente Pagine, sarebbe molto difficile organizzarle per presentarle in maniera efficace all'Utente.

Spero con questi semplici esempi di averti dato un'idea della profondità e complessità del problema. Se i tuoi contenuti non sono strutturati e quindi non hai previsto tipi di contenuti personalizzati ti ritroverai a gestire molto male i contenuti che pubblichi e a mostrarli all'utente in maniere confusionarie ed incomprensibili.

Siccome in WordPress possiamo gestire tipi di post personalizzati in maniera molto efficace, e bene che tu sfrutti questa occasione per fare un favore a te stesso e all'utente.

Cominciamo allora ad andare sul tecnico.

Come si traduce l'organizzazione dei contenuti in WordPress?

WordPress di default permette la gestione di alcuni tipi di contenuti senza interventi aggiuntivi:

  • Post (articoli): usati per contenuti freschi come articoli, guide, novità, comunicati, ecc. Gli articoli si accumulano per cui è naturale che gli articoli più recenti mettano in ombra gradualmente quelli più vecchi. Gli articoli possono essere categorizzati e assegnati a dei tags.
  • Page (pagine): usate per i contenuti più "statici", quelli che una volta scritti vengono aggiornati molto di rado e che rimangono sempre a vista d'occhio dell'utente. Le pagine non hanno categorie o tags però possono essere ordinate gerarchicamente. Si prestano quindi molto bene per la gestione di pagine aziendali e servizi (la sezione Chi Siamo potrebbe contenere Presentazione, Dove Siamo e Contatti; la sezione Servizi Tipo A potrebbe contenere Servizio A.1, Servizio A.2, Servizio A.3, ecc)
  • Attachment (allegati): tipo di contenuti necessario per la gestione di files caricati nella sezione Media o durante la scrittura di articoli e pagine.
  • Revision (revisioni): post per la gestione delle revisioni degli articoli e delle pagine
  • Navigation menu (menu di navigazione): i menu di navigazione in WordPress sono dei tipi di dati molto particolari la cui gestione nel lato amministrativo permette di creare e modificare i menu di navigazione mostrati all'utente.

Ora ti starai chiedendo: "Come si fa con tutti gli altri tipi di post?" Vediamolo...

Tipi di post personalizzati in WordPress

WordPress nasce essenzialmente come piattaforma di Personal Publishing (per la creazione di Blog per intenderci) e quindi il suo tipo di contenuto principale è il Post (articolo). Nel tempo però (nel 2005 per la precisione) ha introdotto la possibilità di creare pagine statiche spianando la strada all'avvento di altri tipi di post.

Questi non sono tardati ad arrivare ed è così che nel 2010, con la versione 3.0 di WordPress, che si è aggiunta la facoltà di aggiungere tipi di post personalizzati al proprio sito web con tutto quello che ne deriva:

  • Possibilità di aggiungere, modificare, cancellare i post personalizzati
  • Possibilità di organizzare questi tipi di post tramite tassonomie (categorie e tags)
  • Visualizzare ogni tipo di post personalizzato al suo indirizzo URL specifico (esempio: tuosito.com/eventi/)
  • Capacità di caratterizzare ogni tipo di post personalizzato con attributi (meta attributes) e poterli definire all'atto della creazione / modifica del post

Come si crea un tipo di post personalizzato in WordPress?

E' venuto il momento di sporcarsi le mani! Per "registrare" un tipo di contenuto personalizzato alla tua struttura è sufficiente che tu aggiunga codice al tuo functions.php o in qualsiasi altro script che poi includerai in functions.php. Il codice assomiglierà ad una cosa del genere:

// REGISTRA IL CUSTOM POST TYPE
function register_film_post_type()
{

	$labels = array(
		'name' => 'Films',
		'singular_name' => 'Film',
		'menu_name' => 'Film',
		'parent_item_colon' => '',
		'all_items' => 'Tutti i Films',
		'view_item' => 'Visualizza Film',
		'add_new_item' => 'Aggiungi nuovo Film',
		'add_new' => 'Aggiungi nuovo',
		'edit_item' => 'Modifica Film',
		'update_item' => 'Aggiorna Film',
		'search_items' => 'Ricerca Film',
		'not_found' => 'Film non trovato',
		'not_found_in_trash' => 'Nessun Film nel cestino',
	);

	$rewrite = array(
		'slug' => 'films',
		'with_front' => true,
		'pages' => true,
		'feeds' => true,
	);

	$args = array(
		'label' => 'film',
		'description' => 'Film',
		'labels' => $labels,
		'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'comments', 'custom-fields', 'page-attributes', 'post-formats', ),
		'taxonomies' => array( 'genere' ),
		'hierarchical' => false,
		'public' => true,
		'show_ui' => true,
		'show_in_menu' => true,
		'show_in_nav_menus' => true,
		'show_in_admin_bar' => true,
		'menu_position' => 5,
		'can_export' => true,
		'has_archive' => true,
		'exclude_from_search' => false,
		'publicly_queryable' => true,
		'rewrite' => $rewrite,
		'capability_type' => 'page',
	);

	register_post_type( 'film', $args );

}

// AGGANCIA LA REGISTRAZIONE ALL'HOOK "init"
add_action( 'init', 'register_film_post_type', 0 );

L'esempio riporta la creazione di un tipo di post personalizzato per la gestione di post "Film".

Dopo che avrai inserito questo codice nel functions.php potrai nel tuo WordPress creare nuovi Film, catalogarli per Genere, aggiungere attributi personalizzati come Anno, Regista, Attori, ecc. Non è eccezionale?

Risorse per la creazione di tipi di post personalizzati

Anche se questo mio articolo riguarda WordPress, il mio intento era quello di farti comprendere l'importanza di informazioni ben organizzate.

Questo anche perché dalla introduzione dei tipi di post personalizzati ad oggi, si sono moltiplicati i tutorials e i tools che ti permettono di approfondire e gestire la questione dal punto di vista tecnico.

In questa sezione conclusiva voglio quindi lasciarti con una selezione di risorse che può esserti utile:

Condividi l'articolo

guest
4 Commenti
Inline Feedbacks
View all comments
LaMary
LaMary
9 anni fa

Bel post! utilissimo lo snippet e le risorse , grazie!

Mary

Marco Panichi
9 anni fa
Reply to  LaMary

Felice di esserti stato utile Mary, torna a trovarmi!

Dender
Dender
9 anni fa

ciao Marco, ho seguito il tuo consiglio datomi su FB e ho impostato i tipi di post per la mia agenzia, un tipo per i rappresentanti e uno per le zone geografiche. ma come faccio ora a dire che un rappresentate lavora in una o più zone e viceversa? non so se mi sono spiegato

Marco Panichi
9 anni fa
Reply to  Dender

ciao Dender, ti sei spiegato benissimo tranquillo. Quello che ti serve è di mettere in relazione le due entità tra di loro. E’ un’esigenza che è sempre esistita e forse uno dei principi base dei database RELAZIONALI come MySQL.

Ti faccio notare che esistono vari tipi di relazioni:
> UNO a UNO: esempio Moglie Marito
> UNO a MOLTI: esempio Padre Figlio
> MOLTI a MOLTI: esempio Agenti Zone (il tuo caso)

Creare questo tipo di relazione non è proprio semplicissimo perché sono coinvolti vari aspetti. Quando metti in relazione varie entità devi stare attento a molte cose, come ad esempio, se cancello un Agente, cosa accade alla Zona?

Se ti stai avventurando da poco nell’argomento, ti consiglio di improntare i CPT come hai già fatto ma di avvalerti di un plugin per gestire le relazioni. Ecco alcuni plugins che potrebbero fare al tuo caso:
> https://wordpress.org/plugins/custom-post-types-relationships-cptr/
> https://it.wordpress.org/plugins/custom-post-type-relations/

Per qualsiasi cosa fammi sapere! Buon lavoro!

Marco