Questo articolo è stato scritto e pensato prima che i custom post type divenissero potenti e facilmente gestibili. Si fa infatti riferimento a come usare le categorie per creare tipi di contenuti diversi. 

WordPress Single Post Templates, quante volte avrai cercato questa frase alla disperata ricerca di come fare a stilizzare in modo differente gli articoli di WordPress? Dalla versione 3.0 in poi fortunatamente qualcosa si è mosso; è stata introdotta infatti dapprima la possibilità di creare diversi Post Types e successivamente, dalla versione 3.1 sono stati introdotti alcuni diversi Post Format per differenziare gli articoli. Non è ancora tuttavia possibile, in modo nativo, creare diversi tipi di contenuti, come accade invece per esempio con altri CMS (ad esempio con i content type di Drupal). Questo ostacolo è però facilmente aggirabile utilizzando il fantastico plugin Magic Fields con il quale è possibile creare campi di ogni tipo (tendine, checkbox, immagini eccc…) differenti per articoli (o pagine) differenti. Grazie anche alla sua nutrita documentazione (seppur non interamente tradotta in inglese) è molto semplice iniziare a trasformare la nostra piattaforma in un vero e proprio CMS.

NB: Perchè tutto funzioni correttamente occorre utilizzare una versione di WordPress superiore alla 3.0. Tutti i files .php citati inoltre vanno collocati nella cartella wp-content/themes/nome-del-tema

Aggirare l’ostacolo per stilizzare gli articoli

Una volta che avrai imparato a padroneggiare Magic Fields, ti troverai molto probabilmente nella condizione di voler stilizzare degli articoli in modo diverso. Per poter fare ciò è stato identificato un piccolo trick che sfrutta le categorie. Quello che devi fare precisamente sarà:

  • Creare categorie differenti per quei gruppi di articoli che vuoi differenziare, ed inserire quindi gli articoli “diversi” nella corretta categoria
  • Modificare il file single.php creando una condizione per cui se l’articolo si trova in una categoria piuttosto che in un’altra verrà caricato un file di tema diverso:
< ?php
  $post = $wp_query- >post;
  if ( in_category('1') ) {
  include(TEMPLATEPATH . '/single1.php');
  } elseif ( in_category('2') ) {
  include(TEMPLATEPATH . '/single2.php');
  } else {
  include(TEMPLATEPATH . '/single_other.php');
  }
? >

Dove i numeri corrispondono al numero della categoria in cui si trova l’articolo

  • Creare i vari single1.php, single2.php single_other.php partendo dalla base del file single.php originario e loop-single.php
  • Personalizzare, sfruttando Magic Fields, i diversi tipi di articoli

Avrai così creato dei veri e propri Tipi di Contenuto diversi.

Stilizzare categorie diverse

Una volta ottenuto il risultato desiderato potrai avere la necessità di stilizzare anche le pagine di raccolta degli articoli di una determinata categoria (che saranno praticamente dei listati dei nuovi tipi di contenuti creati). Per stilizzare una categoria è sufficiente copiare il file category.php (includendo/sostituendo il file loop-category.php laddove presente) e rinominarlo in category-1.php dove 1 è il numero ID della categoria in questione. A questo punto, nel nuovo file, all’interno del Loop potremo utilizzare nuovamente i campi creati con Magic Fields o più semplicemente i tag di base che WordPress fornisce per la gestione dei templates.
Et voilà, il nostro sempre-più-CMS prende vita!

Grazie alla segnalazione di Danilo su italianwebdesign.it, aggiungo il codice da utilizzare per evitare di dover aggiungere un if ogni volta che si crea un tipo di articolo diverso:

<?php
global $post;
$category = get_the_category($post->ID);
$currentcat = $category[0]->cat_ID;
$currentcatn = $category[0]->cat_name;
if (file_exists(TEMPLATEPATH."/single-$currentcat".".php")) {
include(TEMPLATEPATH."/single-$currentcat".".php");
} else {
/*qui ci va il codice del template single.php di default */
}
?>