WordPress 3.1: i formati dei post

I formati dei post sono stati introdotti da WordPress 3.1 per aumentare le possibilità di personalizzazione dei temi. Prima di procedere, se non si conosce bene la struttura di un tema WordPress, è consigliabile leggere l’articolo Struttura di un tema WordPress.

Il formato è un’informazione che può essere utilizzata dal tema per modificare la visualizzazione di un post. La lista dei formati è standard e tutti i temi possono farne uso. Non è necessario supportare tutti i formati della lista, ma è possibile abilitarne solo una parte, mentre non è possibile aggiungere nuovi formati, né tramite plugin, né attraverso i temi. Questa limitazione serve a garantire la compatibilità tra i vari temi e a consentire eventualmente l’accesso all’informazione sul formato da parte di strumenti di blogging esterni.

In poche parole, se un tema supporta i Formati dei post, un blogger può modificare l’aspetto di un post scegliendo il formato più appropriato da una lista a bottoni radio.

Formati Supportati

Il formato di un post non influenza il contenuto del post, che rimane sempre uguale, ma consente al tema di scegliere come visualizzarlo, escludendo eventualmente il titolo, le informazioni riguardo l’autore e la data o definendo degli stili CSS personalizzati. Qui di seguito sono elencati tutti i formati dei post disponibili per l’attivazione e lo scopo per cui sono stati definiti. In ogni caso si tratta di linee guida che non si è obbligati a seguire, visto che ogni tipo di personalizzazione è lasciata al tema.

  • aside: un post senza titolo, simile all’aggiornamento di stato di Facebook.
  • gallery: una galleria di immagini. Il contenuto del post dovrà contenere lo shortcode di una gallery.
  • link: un link verso un altro sito. I temi possono utilizzare il primo tag <a href=””> che si trova nel contenuto del post come link esterno per quel post. In alternativa il post potrebbe contenere solamente un URL e il titolo potrebbe essere l’ancora da utilizzare nel link.
  • image: un’immagine singola. Il primo tag <img /> contenuto nel post potrebbe essere considerato come l’immagine. In alternativa, il post potrebbe essere formato solo da un URL, da utilizzare poi come URL dell’immagine, mentre il titolo del post potrebbe essere usato come title dell’immagine.
  • quote: una citazione. Il post potrebbe contenere un tag <blockquote> che racchiude la citazione. In alternativa, la citazione potrebbe essere inserita come contenuto del post e la fonte come titolo.
  • status: un breve aggiornamento di stato, simile ai tweet di Twitter-
  • video: un video singolo. Il primo tag <video /> tag o object/embed contenuto nel post potrebbe essere considerato come il video. In alternativa, il post potrebbe essere formato solo da un URL, da utilizzare poi come URL del video.
  • audio: un file audio, da utilizzare per esempio come podcast.
  • chat: la trascrittura di una chat.

Da notare che quando si scrive un post senza specificare alcun formato, gli viene assegnato di default il formato standard di WordPress, così come quando gli viene assegnato un formato non valido.

Aggiungere al tema il supporto ad un formato

Per aggiungere il supporto ad un formato è necessario inserire nel file functions.php del tema una chiamata alla funzione add_theme_support(). La funzione serve per indicare a WordPress quali formati sono in uso nel tema.

add_theme_support('post-formats', array('aside', 'gallery'));

Questa funzione deve essere chiamata prima del hook “init”, altrimenti non avrà effetto. Per questo motivo si può inserire dentro ad una generica funzione di setup del tema da chiamare in corrispondenza del hook “after_setup_theme”. Chi non fosse esperto può inserire in functions.php questo codice:

add_action('after_setup_theme', 'my_theme_setup');
function my_theme_setup() {
        add_theme_support('post-formats', array('aside', 'gallery'));
}

Utilizzare i formati

Nei file di template del tema, all’interno del loop, si possono utilizzare due diverse funzioni per gestire il formato del post: get_post_format()has_post_format(). La prima restituisce il formato del post, quindi può essere utilizzata così:

$format = get_post_format();
switch ($format) {
   case 'video':        
      /* template video*/       
      break;    
   case 'image':        
      /* template image*/    
      break;  
   default:
      /* template standard */
}

Inserendo per ciascun caso il codice corrispondente alle personalizzazioni volute. Nel caso il post non abbia alcun formato (cioè abbia il formato standard), la funzione restituisce false.

La funzione has_post_format(), invece, è un tag condizionale e serve a testare se il post ha un determinato formato. Può essere utilizzata nel seguente modo:

if(has_post_format('video')) {
   /* template video*/
} elseif(has_post_format('image')) {
   /* template image*/
} elseif(has_post_format('gallery')) {
   /* template gallery*/
} else {
   /* template standard */
}

Se si vuole personalizzare solamente il CSS a seconda del formato, si può utilizzare la funzione post_class() che serve ad aggiungere le classi previste da WordPress al div che racchiude il contenuto del post. Questa funzione, nel caso sia definito un formato, aggiunge anche la classe “format-xxx”, dove xxx è il nome del formato. La maggior parte dei temi esistenti la utilizza già e si può trovare richiamata così:

<div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>

In tal caso, si può personalizzare il CSS dei formati abilitati aggiungendo in style.css le nuove classi:

.format-video {
     /* CSS per i post video */
}
.format-audio {
     /* CSS per i post video */
}
.format-gallery{
     /* CSS per i post video */
}
Precedente iTheme2: tema WordPress free a due colonne in stile MAC OS X Successivo WordPress 3.1 in italiano e nuovo forum di Dr.WordPress
  • Teo

    Ottimo articolo, grazie!

  • E dire che WordPress nn mi piaceva comincioa ad usarlo anche piu’ di Joomla

  • Ciao Niccolò! Grazie per il post! 🙂
    Sto facendo un sito in WordPress, rimodificando il buon vecchio Twentyelven…
    Ho visto che negli articoli è già presente la funzione formato, ma qualsiasi formato applichi al post, la grafica rimane la stessa, ho provato anche a cambiare manualmente le pagine dei formati per vedere se cambiava qualcosa ma niente…

    Volevo quindi sapere se devo aggiungere qualche stringa di codice per farlo funzionare o se è già tutto implementato nel twentyeleven…

    Grazie in anticipo, Matteo! 🙂

    • Non devi aggiungere nulla per usare il formato dei post su Twenty Eleven. La grafica non cambia molto, cambiano gli elementi visualizzati dei post. Per esempio la digressione se non ricordo male non visualizza alcun titolo. Per fare un po’di test, prova a pubblicare post con diversi formati e vedere nella home che differenze hanno.

  • amyfonta

    Ciao!!! Io ho usato il tema “Bueno” e vorrei che quando si entra sulla pagina iniziale dei post si veda solo una parte, non tutto il post.. come posso fare???

  • grazie per il sito e la cura nello scrivere tutte le cosette

  • ilaria

    Conversazione iniziata Mercoledì
    12:06
    Ilaria Cuzzolin
    Caro
    Niccolò….ti prego dammi la
    cura perchè sto impazzendo. Lo so che a te sembrerà una banalità e che
    tutti voi del settore dite che wordpress è intuitivo (mah!), ma non
    riesco a mettere più post sotto la stessa pagina. Anzi! Non so proprio
    mettere un post sotto una pagina. Così mi sono inventata di nominare le
    categorie come la pagine e di posizionarle nella barra menù. Però da
    quello che so (e ho fatto) il seo l ho compilato per le pagine…e
    quindi credo sia importante quello per lindicizzazione. Io ho un sito
    nato da due mesi che si chiama http://www.mammarisparmio.it…se
    vai a vedere ora troverai nel menù le pagine (spuntate ma vuote) e come
    sottomenù le categorie che ho rinominato come le pagine e dove riesco a
    mettere i vari post, che compaiono tutti sia in home e poi nelle varie
    pagine di riferimento. Ma cavolicchio….come diavolo si fa a mettere
    uno o più post sotto una pagina? Mi sono fatta un giro in rete e ho
    visto che tanti hanno risolto come me…ma ci deve essere un
    sistema….uffa! Grazie se mi darai una risposta…e complimenti per il
    servizio che dai a tutti noi Ilaria