I Custom Fields in Wordpress : cosa sono ed esempi pratici.

Custom Fields1 I Custom Fields in Wordpress : cosa sono ed esempi pratici.

Mi son reso conto, leggendo post e forum in giro per la rete, che la conoscenza dei Custom Fields su Wordpress è davvero scarsa o molto approssimativa.

Vuoi perché molti evitano di smanettare sul codice affidandosi solo ai salvifici plugins o vuoi perchè se ne parla, effettivamente molto poco.

Allora ho pensato che un articoletto all’argomento lo si poteva pure dedicare…ed eccomi qua. Questo non è logicamente un tutorial sull’argomento, ma un’infarinatura di base non fà mai male.

Come mostrato nell’immagine introduttiva, i custom fields (o campi personalizzati nelle versione in italiano) sono costituiti da quella sezioncina che trovate nel mezzo o in fondo alla pagina dove scrivete un articolo su Wordpress.
Anche se la stragrande maggioranza degli utilizzatori di WP non li usano, il fatto che esistano da tempo qualche cosa deve pur significare!

Cosa Sono i Custom Fields

In sostanza, i campi personalizzati non sono altro che contenitori di informazioni aggiuntive associabili ad uno specifico post (o pagina). Tali informazioni (testo o immagini) possono essere riprese e sfruttate per essre visualizzate in un punto qualsiasi del tema utilizzato per il vostro sito/blog.
Va subito detto che un custom field si compone di

- Key (chiave) : è banalmente il nome assegnato al campo personalizzato.

- Value (valore) :  è il valore da associare alla chiave. Può essere un testo oppure un’immagine.

Un custom field può essere scelto dai valori che compaiono nel menu a tendina della sezione in oggetto oppure potete crearne uno nuovo (Aggiungi Campo Personalizzato). Dopo averlo creato la prima volta, su ogni post successivo vi comparirà nel menu a tendina anche il campo appena creato. Va precisato che alcuni valori che trovate già nel menu a tendina sono dovuti ai plugins da voi installati. Anche questi ultimi li sfruttano per funzionare…

Le funzioni

Wordpress mette a disposizione alcune utili funzioni per gestire al meglio i custom fields.
Se vogliamo, ad esempio, avere un elenco dei custom fields a disposizione per un post utilizzremo la funzione the_meta().

Se associamo ad un post preciso :

<?php the_meta(); ?>

L’output sarà del tipo :

<ul class='post-meta'>
<li><span class='post-meta-key'>test1-name:</span> test1-value</li>
<li><span class='post-meta-key'>test2-name:</span> test2-value<;/li>
</ul>

dove si capisce chiaramente che quel post ha associati due campi personalizzati con tanto di nome e valore indicati.

Accanto a questa funzione presa ad esempo ce ne sono altre fondamentali per gestire via php i custom fields (mostrate poi nei due esempi qui sotto).
Eccovi la pagina ufficiale di Wordpress a tal proposito.

Esempi di Applicazione

Vediamo, ora, due esempi pratici che vi mostreranno l’utilità dei custom fields.

1. Visualizzare i post solo con thumbnail e introduzione

Ammettiamo che vogliate mostrare nella vostra Home non i vari articoli per intero, ma solo un riassunto accompagnato da un’immagine e un link al permalink del post. Come farlo?
I custom fields calzano a pennello-
Occorre creare, se già non lo avete fatto prima, un campo ‘image’ per un post così, dopo, lo avrete a disposizione per ogni post. A tal punto, non vi resta che specificare per la chiave ‘image’ di ogni post l’url di un’immagine diversa : sarà, in pratica, l’immagine che utilizzerete come thumb.

Fatto questo, passate al template. Dovrete, infatti, far apparire le immagini nel layout richiamando il valore del custom field ‘image’.

Posizionatevi sempre all’interno del loop che cicla i post da visualizzare nella Home :

<?php $mythumb = get_post_custom_values("image"); ?> //state recuperando il valore del custom field image
<a href="<?php the_permalink() ?>">
<img src="<?php echo $mythumb; ?>" /> // inserite l'immagine scelta per ogni post
<?php the_excerpt(); ?> // visualizzate solo l'introduzione del post come previsto
</a>

2. Pubblicare post con una expiration date precisa

Supponiamo vogliate che alcuni dei vostri post (mi vengono in mente quelli legati a dei contest o simili) siano pubblicati e visibili solo fino ad una certa data scelta da voi. Da quel momento in poi non verranno cancellati, ma semplicemente non saranno più visibili sul blog.

Create un custom field con chiave ‘expiration’ e valore una data nel formato mm/dd/yyyy 00:00:00. Logicamente, settate la data di expiration per quei post che vi interessano. Qundi agite sempre sul loop famoso :

       $expirationtime = get_post_custom_values('expiration'); //state recuperando il valore del custom field expiration
         if (is_array($expirationtime)) {
             $expirestring = implode($expirationtime);
         }

         $secondsbetween = strtotime($expirestring)-time();
         if ( $secondsbetween > 0 ) {
             // Mostrate quello che desiderate se il post dovrà essere visibile
             the_title();
             the_excerpt();
         }
     endwhile;
endif;
?>

C’ chi addirittura li ha usati per risolvere il discorso traduzione di articoli da una lingua all’altra….

Per domande/dubbi ci sono i commenti. Se riesco vi aiuto volentieri.

3 Commenti all'articolo

  1. cesconix - 2 aprile 2010

    Interessante! Ma è possibile inglobare alla funzione wp_page_list() i custom field associati alle pagine? Mi serve capire se posso creare dei menu in cui ogni link della pagina abbia anche un campo personalizzato “descrizione”.

    Saluti.

  2. pecciola - 2 aprile 2010

    Bella domanda…non vedo perchè non dovrebbe essere possibile anche se, in tutta sincerità, non mi è mai capitato d dover fare una cosa simile!

  3. Ed - 20 settembre 2010

    Grazie tante! Il tuo articolo e’ stato molto utile

Lascia un commento