Lauryn Web Design - Milano, Edimburgo e online

WordPress: come creare template per i singoli post di categorie diverse

Per il progetto che sto finendo ho dovuto cercare diverse funzioni, fra le quali quella di personalizzare i singoli post collegati ad una singola categoria.

Cercando ho trovato questo semplice script da aggiungere al file functions.php del vostro tema.

Innanzitutto nella cartella del vostro tema create una cartella scrivibile che chiamerete /single/ e dentro la quale riporrete il file che costituisce il template della vostra categoria, chiamandolo nel seguente modo: single-cat-nomecategoria.php dove il nome della categoria sia lo slug (l’abbreviazione) usata da wordpress. Se composta da più parole non temete, potete usarla tranquillamente (es: single-cat-nome-della-categoria.php)

Ed ecco lo script che prende in automatico quel template associandolo al post presente in quella categoria:

/**
* Filter the single_template with our custom function
*/
define(SINGLE_PATH, STYLESHEETPATH . '/single');

/**
* Filter the single_template with our custom function
*/
add_filter('single_template', 'my_single_template');

/**
* Single template function which will choose our template
*/
function my_single_template($single) {
global $wp_query, $post;

/**
* Checks for single template by category
* Check by category slug and ID
*/
foreach((array)get_the_category() as $cat) :

if(file_exists(SINGLE_PATH . '/single-cat-' . $cat->slug . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->slug . '.php';

elseif(file_exists(SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php'))
return SINGLE_PATH . '/single-cat-' . $cat->term_id . '.php';

endforeach;

/**
* Checks for default single post files within the single folder
*/
if(file_exists(SINGLE_PATH . '/single.php'))
return SINGLE_PATH . '/single.php';

elseif(file_exists(SINGLE_PATH . '/default.php'))
return SINGLE_PATH . '/default.php';

return $single;
}

Se ti è piaciuto condividilo

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *