WordPress: differenziare i commenti
27 Novembre 2006
Qualche tempo fa un lettore mi ha scritto una mail chiedendomi come differenziare i commenti dell’autore del blog da quelli dei visitatori: al tempo la gestione era completamente affidata al tema in uso (K2), il nuovo tema si limita ad alternare il colore di sfondo dei commenti per facilitare la lettura.
Una rapida occhiata al file comments.php permette di scoprire in che modo si ottiene l’effetto “colori alternati”: al commento viene assegnata una classe sulla base di una variabile ($oddcomment), il valore della variabile viene “invertito” al termine di ogni ciclo.
<li class="<?php echo $oddcomment; ?>" ...
** INVERSIONE DELLA VARIABILE
if ('alt' == $oddcomment) $oddcomment = '';
else $oddcomment = 'alt';
Prima osservazione: non ha molto senso avere un class=”” associato ai commenti dispari. Per risolvere è sufficiente modificare il codice inserendo direttamente l’attributo class nella variabile
<li <?php echo $oddcomment; ?> ...
** INVERSIONE DELLA VARIABILE
if ('class="alt" ' == $oddcomment) $oddcomment = '';
else $oddcomment = 'class="alt" ';
Ovviamente sarà necessario modificare anche il valore assegnato inizialmente alla variabile
$oddcomment = 'class="alt" ';
Per distinguere il commento dell’autore del blog è possibile utilizzare il campo user_id del database: se si tratta di un visitatore avrà valore 0, in caso contrario avrà un valore numerico (tipicamente 1 se c’è un solo utente iscritto).
Questo è il codice modificato (qui è disponibile il file comments.php completo):
/* Imposto la variabile per il numero di commento */
$numero_commento = 1;
...
if ($comment->user_id != 0) {
/* si tratta di un commento dell'autore del blog */
if ($numero_commento % 2 != 0) {$classe_commento = 'class="alt commento_autore"';}
else {$classe_commento = 'class="commento_autore" ';}
}
else {
/* si tratta del commento di un visitatore */
if ($numero_commento % 2 != 0) {$classe_commento = 'class="alt"';}
else {$classe_commento = '';}
}
...
<li <?php echo $classe_commento; ?>
...
<?php /* Incremento il numero del commento prima della fine del ciclo*/
$numero_commento++;
Nota: a differenza del codice originale il controllo del commento pari/dispari viene effettuato usando una variabile numerica.
A questo punto è possibile modificare lo stile dei commenti sfruttando la classe commento_autore nel CSS; utilizzando il campo user_id e poche righe di codice sarà ovviamente possibile distinguere i vari autori in caso di blog gestito da più persone 😉
7 commenti/trackback a “WordPress: differenziare i commenti”
Trackback e pingback
- pseudotecnico:blog » Wordpress: differenziare i trackback dai commenti
[...] aver modificato il tema originale per differenziare i commenti, domenica pomeriggio ho approfittato di un attimo di tempo libero…
Non è possibile inserire nuovi commenti. I commenti vengono disattivati automaticamente dopo 60 giorni.
27 Novembre 2006 alle 09:54
mui interessante ! Tnx
27 Novembre 2006 alle 13:40
Sono stato io a farti quella domanda … 😉
Grazie per aver pubblicato questo articolo.
Davvero ben fatto! 🙂
27 Novembre 2006 alle 13:48
Di nulla 😉
27 Novembre 2006 alle 16:16
Davvero molto utile e ben fatto come guida.
13 Maggio 2008 alle 19:17
salve, avrei alcune domande a riguardo:
1) Funziona su tutti i temi e versioni wp?
2) Sarebbe possibile differenziare solo alcuni commenti di utenti anche non registrati?! magari prendendo id di tale commento.
spero in una sua risposta quanto prima;)
13 Maggio 2008 alle 19:34
1) Sì, a meno di esigenze particolari con il codice risultante dovrebbe funzionare su tutti i temi e le versioni di WP (anche considerando che lo sto usando da un anno e mezzo su questo blog).
2) La vedo dura (bisognerebbe modificare il codice ogni volta), meglio inserire una condizione che controlla l’indirizzo e-mail del commentatore invece dell’userid ($comment->comment_author_email)