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”

  1. kOoLiNuS scrive:

    mui interessante ! Tnx

  2. NicK scrive:

    Sono stato io a farti quella domanda … 😉
    Grazie per aver pubblicato questo articolo.
    Davvero ben fatto! 🙂

  3. flod scrive:

    Di nulla 😉

  4. thisend scrive:

    Davvero molto utile e ben fatto come guida.

  5. cirio scrive:

    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;)

  6. flod scrive:

    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)

Trackback e pingback

  1. 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.