Cerca nel sito

Rss Posts

Rss Comments

Login

 

WordPress, post formattati a seconda della categoria

ago 04 by luchino

Non molto tempo fa ho letto un interessantissimo post di Wolly che spiegava come personalizzare la formattazione degli articoli di WordPress secondo la categoria.

Il post, che vi invito a leggere, spiegava come ottenere in pochi semplici passaggi una versione personalizzata del file single.php, utilizzato ormai da quasi tutti i temi di WordPress per formattare la pagina dei post.

In pratica il post di Wolly consiglia di modificare il file single originale inserendo un if che dice a WordPress di utilizzare il normale contenuto del file single.php per tutti i post ad eccezione di quelli appartenenti ad una particolare categoria di cui va indicato l'id e per la quale va specificato un file alternativo che si occuperà della formattazione di tutti gli articoli di quella categoria.

Leggendo mi è venuto in mente che molte persone potrebbero voler personalizzare anche per più di una categoria e ritengo che ciò possa essere fatto prendendo spunto dal suggerimento di Wolly ma rendendo il tutto più semplice e limitando, dopo la configurazione iniziale, le operazioni alla semplice creazione di un nuovo file per ogni categoria.

L'idea di base è di avere un controllo dinamico basandoci sull'id della categoria (consigliato) o al limite anche sul nome, in modo tale che se abbiamo creato una formattazione ad hoc WordPress utilizzerà questa, altrimenti utilizzerà il contenuto del file single.php del template.

Per iniziare recuperiamo l'id della categoria relativa al nostro post, per farlo utilizzeremo la funzione get_the_category presente nel Codex di WordPress, quindi inseriamo all'inizio del file single.php questo codice

<?php
global $post;
$categoriesx = get_the_category($post->ID);
$catIDx = $categoriesx[0]->cat_ID;
?>

in questo modo la variabile $catIDx conterrà l'id della prima categoria, poichè WP consente di asociare più categorie al singolo post ho dato per scontato che sfrutteremo la prima per valutare se formattarlo in maniera particolare o meno.

Recuperato l'id della categoria è sufficiente creare tanti file quante sono le formattazioni desiderate chiamandole in modo che siano facilmente riconoscibili, io propongo qualcosa del tipo single-ID della categoria.php quindi ad esempio single-1.php

Questi file saranno delle copie esatte del file single.php originale del template ma con le dovute modifiche di layout e per comodità consiglio di caricarli nella directory del vostro tema (wp-content/themes/Nome_Tema).

A questo punto non ci resta che dire a WordPress di controllare se esiste un file di formattazione per la categoria di cui fa parte il nostro post e quindi di utilizzarlo oppure di formattare con il layout di default del tema.

Per fare questo inseriamo un controllo file_exists e poi un if aiutandoci con la funzione load_template di WordPress, inseriamo queste righe subito dopo le precedenti

<?php if(file_exists(TEMPLATEPATH . '/single-'.$catIDx.'.php')){

load_template(TEMPLATEPATH . '/single-'.$catIDx.'.php');
}else{

e in fondo a single.php, proprio alla fine chiudiamo l'else

}

lo vedete in funzione nella pagina di questo post e in tutti i post che hanno come categoria Worpress; ho aggiunto un rettangolo sotto l'articolo con due righe su WordPress e il logo.

Fatemi sapere se lo trovate utile e se lo implementate in qualche vostro blog.

Per chi volesse sostituire l'id della categoria col nome (occhio però in caso rinominiate la categoria il meccanismo non funzionerà più!) potete tranquillamente modificare l'assegnazione della variabile $catIDx facendole assumere il valore del nome della categoria in questo modo

$catIDx = $categoriesx[0]->cat_name;

il resto dello script è invariato, ovviamente i file con le formattazioni saranno del tipo single-Wordpress.php.

Buon divertimento

Be Sociable, Share!
Questo post è inserito nella categoria Wordpress, una piattaforma di blogging molto potente che permette un alto livello di personalizzazione e può essere usata anche per gestire siti, portali e addirittura ecommerce.

Hai bisogno di un aiuto con Wordpress? contattami