WordPress Custom Post Types

520870_f821_3
Facebook
Twitter
LinkedIn
WhatsApp

Ciao a tutti, purtroppo non mi sono fatto sentire per un po’. Ma ora perché non rimettiamo mano a WordPress e non ci cimentiamo in qualcosa di nuovo?
Come alcuni sapranno dalla versione 3.0 sono stati introdotti i custom post types ovvero le tipologie di post personalizzate. Vi chiederete che bisogno c’era, visto che si poteva già scrivere qualsiasi cosa negli articoli e organizzarli secondo le più svariate categorie o tag, le famose taxonomies di WordPress. Questo è vero se il sito che vogliamo realizzare è un blog o un magazine, ma se volessimo realizzare un sito di e-commerce con un catalogo prodotti o un archivio dei nostri film preferiti la tipologia di contenuto standard di WordPress (il post o, in Italiano, articolo) non sarebbe adatta.
Il post per descrivere un film, per esempio, conterrà la trama, il titolo, il campo attori, il genere e l’anno di produzione, tutti campi – titolo e descrizione a parte – non disponibili di default. Dovremo quindi:

  • Definire un nuovo Post Type (Film)
  • Definire delle categorie personalizzate (Giallo, Commedia, Horror ecc.)
  • Definire dei campi ad hoc per descrivere il film (Regista, Attori, Durata, Anno di produzione ecc.)

Sporchiamoci le mani col codice

Il file che andremo a modificare è functions.php all’interno della directory del nostro tema. Apriamo questo file col nostro editor preferito oppure con l’editor di WordPress e al fondo incolliamo questo codice:

<?php add_action('init', 'film_register');
function film_register() {
  $labels = array(
   'name' => 'Film',
                 'singular_name' => 'Film',
                  'menu_name' => 'I miei film',
                  'add_new' => 'Inserisci',
                  'add_new_item' => 'Inserisci film',
                  'edit' => 'Modifica',
                  'edit_item' => 'Modifica film',
                  'new_item' => 'Nuovo Film',
                  'view' => 'Visualizza film',
                  'view_item' => 'Visualizza film',
                  'search_items' => 'Ricerca film',
                  'not_found' => 'Film non trovato',
                  'not_found_in_trash' => 'Nessun film nel cestino',
                  'parent' => 'Film Genitore',
  );

  $args = array(
   'label' => 'Film',
                 'description' => '',
                 'public' => true,
                 'show_ui' => true,
                 'show_in_menu' => true,
                 'capability_type' => 'post',
                 'hierarchical' => false,
                 'rewrite' => array('slug' => 'I miei film'),
                 'query_var' => true,
                 'has_archive' => true,
                 'menu_position' => 5,
                 'supports' => array('title','editor',),
                 'taxonomies' => array('generi',)
    );
   register_post_type( 'film' , $args );
}?>

Chiunque abbia un po’ di familiarità con WordPress riconoscerà questo codice. Abbiamo aggiunto un’azione quando viene inizializzata l’interfaccia amministratore di WP, per richiamare la funzione film_register(); con questa funzione creiamo due array, $labels e $args. Con $register_post_type per creare la tipologia film, che userà i parametri definiti in $args.

Diamo un’occhita più da vicino a quello che abbiamo scritto e cerchiamo di comprenderne il significato:
per quanto riguarda $labels:

  • name il nome del nostro post-type (Film, Libri ecc.)
  • singular_name – come vogliamo chiamare il post-type al singolare (es. “aggiungi nuovo film, libro ecc.)

potete intuire il significato dei restanti argomenti, si tratta di definire come vogliamo che ci vengano fatte le richieste dal back-end di WordPress.

passiamo all’array $args:

  • public – se vogliamo o meno che vengano mostrati nella UI (User Interface)
  • show_ui – se vogliamo un pannello di amministrazione per questo nuovo custom post type
  • capability_type – WordPress considererà ogni nuovo elemento come un post con la possibilità di leggerlo, modificarlo o cancellarlo
  • hierarchical – deve essere considerato in modo gerarchico come le pagine?
  • rewrite – riscrive i permalinks usando lo slug ‘I miei film’
  • supports quali elementi vogliamo che vengano visualizzati nella pagina di modifica/aggiunta dei post

Questo è sufficiente per poter vedere il nostro nuovo post-type nell’interfaccia amministratore. Salvate il file functions.php e date un’occhiata.

Quello che ci accingiamo a fare ora è creare una categoria per i nostri post-type con la funzione register_post-type.
Per esempio  possiamo creare la categoria “Generi” e popolarla con elementi quali “giallo, commedia, fantascienza” ecc.
Per fare questo ci serve questa riga di codice:

register_taxonomy('generi',array (0 => 'film',),array( 'hierarchical' => true, 'label' => 'Generi','show_ui' => true,'query_var' => true,'rewrite' => array('slug' => 'Generi'),'singular_label' => 'genere') );

Il primo elemento è il nome della categoria (“generi”) che farà parte della tipologia di post appena creata (“film”). Aggiunta questa riga di codice salviamo functions.php.

Il loop di WordPress

Per poter richiamare i custom post types in un template di pagina è necessario configurare il loop di WordPress in questo modo:

<?php
$args = array( 'post_type' => 'film', 'posts_per_page' => 10 ); $loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post();
?>

In questo esempio ho limitato a 10 il numero di post per pagina, è ovvio che potete sbizzarrirvi nel creare il loop della vostara pagina.

Conclusioni

Bene. Direi che per iniziare a creare i vostri custom post type avete le basi giuste. Ovviamente WordPress ci consente di creare anche dei campi di testo personalizzati come il nome del regista o la casa di produzione, per rimanere in tema.
Per ulteriori informazioni, vi rimando a questi due link. Requisiti minimi: conoscenza di base dell’inglese.
A presto.

https://thinkvitamin.com/code/create-your-first-wordpress-custom-post-type/

https://codex.wordpress.org/Post_Types

Ti potrebbe interessare

Lascia un commento