[WordPress] Single Post Template by Category and Taxonomy

(Sorry, always in Italian, but it’s really easy to understand by code)

Avevo necessità di differenziare i “Single Post Template” in WordPress, sia per “category” che per “taxonomy”, dato che una sezione portfolio fa pesante uso di quest’ultima.

Attraverso questa piccola porzione di codice che va inserita in functions.php possiamo creare dei veloci “Single Post Template” in WordPress utilizzando la struttura single-[categoryname].php e senza quindi la necessità di ulteriori plugin esterni.


add_filter('single_template', create_function(
'$the_template',
'foreach( (array) get_the_category() as $cat ) {
if ( file_exists(TEMPLATEPATH . "/single-{$cat->slug}.php") )
return TEMPLATEPATH . "/single-{$cat->slug}.php"; }
return $the_template;' )
);

Ma se utilizziamo, come detto, la “taxonomy” ecco che ho aggiunto un altro filtro. Stessa struttura file, ma stavolta sarà single-[taxonomyname].php

add_filter('single_template', 'single_template_terms');
function single_template_terms($template) {
foreach( (array) wp_get_object_terms(get_the_ID(), get_taxonomies(array('public' => true, '_builtin' => false))) as $term ) {
if ( file_exists(TEMPLATEPATH . "/single-{$term->slug}.php") )
return TEMPLATEPATH . "/single-{$term->slug}.php";
}
return $template;
}

Ovviamente le due funzioni possono coesistere, credo ci sia solo bisogno di evitare l’omonimia tra una categoria ed una tassonomia (ma non l’ho testato su questo fronte).
Uno sviluppatore più accurato potrebbe accorpare tutto in un’unica funzione, ma così possiamo tenere il codice ordinato e separato.

Lascia un Commento

XHTML: Puoi usare questi tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>