Molto spesso ci può essere l’esigenza di avere template diversi per articoli wordpress, differenziati per categorie. Se a prima vista, soprattutto per un neofit, può parre qualcosa di difficile o impossibile, questa situazione è piuttosto diffusa e anche particolarmente facile da risolvere.
Impostare template diversi per articoli WordPress
Per prima cosa vi consiglio, come sempre, di lavorare all’interno di un child theme e di avere un backup aggiornato prima di procedere con qualsiasi modifica. Fatto questo i file che ci serviranno per apportare questa modifica sono functions.php, single.php e lo slug della categoria per la quale vogliamo avere un file single.php personalizzato e diverso da tutti gli altri post. Per chi non lo sapesse lo slug di una categoria è il nome abbreviato che questa ha. Potete ricavarlo entrando nella scheda di una singola categoria (per il nostro tutorial utilizzeremo una categoria con slug realizzazione-siti-web-portfolio).
Il passo successivo è quello di duplicare il nostro file single.php e rinominarlo a piacere, ad esempio single-portfolio.php. Una volta fatto questo possiamo apportare al nostro file single.php personalizzato che abbiamo chiamato single-portfolio.php tutte le modifiche e le personalizzazioni che vogliamo. Quando abbiamo ottenuto il risultato che ci interessa carichiamo il file all’interno della nostra directory di template.
Se proviamo ora a visualizzare un articolo pubblicato all’interno della categoria chiamata Showcase Siti Web con slug di categoria realizzazione-siti-web-portoflio vedremo che nulla è cambiato. Questo perchè non abbiamo ancora istruito WordPress. Per farlo apriamo il file functions.php e incolliamo questa porzione di codice:
//Single.php personalizzato per categoria function get_custom_cat_template($single_template) { global $post; if ( in_category( 'category-name' )) { $single_template = dirname( __FILE__ ) . '/single-template.php'; } return $single_template; } add_filter( "single_template", "get_custom_cat_template" ) ;
Da questo codie dobbiamo sostituire category-name con lo slug della nostra categoria e single-template.php con il nome del nostro single.php che abbiamo duplicato e personalizzato.