Separare i commenti da ping/trackback in WordPress 2.7, 2.8 e superiori
Una delle cose che non apprezzo granché di WordPress è il modo che ha di gestire insieme commenti e pings (trackbackW e pingbackW), come se fossero parte dello stesso flusso di reazioni ad un articolo. Così, dopo aver visto in giro numerosi siti in cui questi due elementi venivano invece separati in due flussi distinti, ho deciso di mettermi a cercare una soluzione per ottenere lo stesso risultato.
…e non è stato mica facile! Ho dovuto penare un po’ per trovare il modo di separare i commenti dei post dai pingback/trackback con le ultime versioni di WordPress. Dalla versione 2.7 in poi, infatti, il codice che compone il file comments.php (responsabile dell’inserimento e della visualizzazione dei commenti e dei trackback/pingback negli articoli) è stato radicalmente riscritto, rendendo così inutili molti dei tutorial sull’argomento già pubblicati in Rete (e plugin analoghi).
Gira che ti rigira, ho trovato questa guida (in inglese) che spiega proprio come ottenere il risultato e ho pensato di tradurne i pochi, semplici passaggi per il pubblico italiano. Eccoli di seguito.
Rimuovere pingback/trackback
La prima cosa da fare è escludere i ping dal flusso dei commenti. Apriamo dunque il file single.php (quello che regola la visualizzione dei singoli post) e sostituiamo la seguente stringa:
<?php comments_template(); ?>
con:
<?php comments_template('', true); ?>
Salviamo le modifiche e apriamo ora il file comments.php. Qui, cerchiamo la stringa:
<?php if ( have_comments() ) : ?>
e aggiungiamo immediatamente dopo:
<?php if ( ! empty($comments_by_type['comment']) ) : ?>
Quindi, sempre nel file comments.php, sostituiamo questo:
<?php wp_list_comments(); ?>
con questo:
<?php wp_list_comments('type=comment'); ?>
Appena sotto la funzione wp_list_comments che abbiamo appena modificato, dovrebbe esserci un tag </ol>. Subito dopo, dobbiamo aggiungere:
<?php endif; ?>
Così facendo, eviteremo che l’intestazione dei commenti e i tag <ol> (che generano le liste numerate) vengano visualizzati nel caso in cui non ci siano commenti all’articolo, ma solo pingback e/o trackback. Ok, fino a qui non dovrebbe essere stato troppo difficile. Ora viene il bello.
Mostrare i ping in un elenco a parte
Per visualizzare pingback e trackback in un elenco a se stante, dobbiamo aggiungere il seguente codice subito dopo l’endif che abbiamo inserito poco fa:
<?php if ( ! empty($comments_by_type['pings']) ) : ?>
<h3 id="pings">Trackbacks/Pingbacks</h3>
<ol class="commentlist">
<?php wp_list_comments('type=pings'); ?>
</ol>
<?php endif; ?>
Fatto? Ottimo. Da ora in poi i ping verranno visualizzati in un elenco a parte, dopo i normali commenti. Ma appariranno come commenti veri e propri, con il testo e tutto il resto, mentre noi vogliamo che appaiano come un semplice elenco numerato fatto solo di titoli cliccabili. Quindi, dovremo fare ancora un paio di piccole operazioni.
Un tocco di stile per trackback e pingback
Apriamo il file functions.php e inseriamo il codice seguente:
<?php
function list_pings($comment, $args, $depth) {
$GLOBALS['comment'] = $comment;
?>
<li id="comment-<?php comment_ID(); ?>"> <?php comment_author_link(); ?>
<?php } ?>
Quindi, torniamo al nostro file comments.php e sostituiamo queste due righe:
<ol class="commentlist">
<?php wp_list_comments('type=pings'); ?>
Con le seguenti:
<ol>
<?php wp_list_comments('type=pings&callback=list_pings'); ?>
Fatto questo potremmo anche aver concluso. Ma c’è un’ultima, piccola modifica che possiamo apportare: serve a mostrare, nel conto dei commenti ad un articolo, il solo conteggio dei commenti veri e propri, escludendo i ping. Basta inserire nel file functions.php ciò che segue:
<?php
add_filter('get_comments_number', 'comment_count', 0);
function comment_count( $count ) {
if ( ! is_admin() ) {
global $id;
$comments_by_type = &separate_comments(get_comments('status=approve&post_id=' . $id));return count($comments_by_type['comment']);
} else {return $count;
}
}
?>
E con questo è davvero tutto. Tutte le modifiche descritte in questo articolo sono state testate (e probabilmente sono ancora in uso) su questo stesso blog senza alcun problema ma, qualora voi doveste incontrare difficoltà, fatemi pure un fischio nei commenti.
Articoli correlati:
- L’aggiornamento di WordPress ha la memoria corta
A partire dalla versione 2.8, ad ogni update di WordPress mi ritrovo sempre con lo stesso problema: dopo l’aggiornamento – che... - WordPress: update a 2.8 ed errore nella dashboard “Allowed Memory Size… exhausted”. Ecco come risolverlo
Scopro sul blog di Camu la soluzione ad un problema riscontrato immediatamente dopo l’aggiornamento all’ultima release di WordPress, la 2.8....
Tags: Wordpress



11. febbraio 2010 at 15:56
[...] cambiamenti se non l’evidenziazione dell’autore, il gravatar più grande e la separazione di trackback e pingback dal flusso naturale dei commenti. Inoltre ne ho invertito l’ordine in modo da rendere più agevole la lettura della [...]
16. dicembre 2010 at 20:28
Mi scuso per la domanda forse fuori luogo riguardo il plugin ma… quando ad esempio sul mio blog ricevo un ping back che punto allo stesso articolo scritto sul mio blog chi me lo ha fatto? può essere un pingback effettuato da qualche crawler dei motori di ricerca che mi stanno dicendo ” si abbiamo scansionato il tuo articolo”?
Se fosse così è utile lasciare questo tipo di pingback?
24. gennaio 2011 at 13:43
@federico,
se ricevi un pingback, è perché qualche altro blog ha linkato l’articolo che tu hai scritto sul tuo. E’ un modo per segnalare in maniera automatica i link in entrata.
24. gennaio 2011 at 17:23
Esatto, infatti cliccando sul link del ping back, si arriva al sito che ha commentato trovando il link al nostro sito. Ci sono delle segnalazioni di ping back però che non capisco. (io uso wordpress).
Ci sono dei pingback dove, cliccandoci sopra, non si va al commento del sito che ha linkato il mio sito ma, cliccandoci sopra, si arriva SOLO al mio sito, come si mi avessi fatto un auto-pingback. Noto che questi tipi di pingback, appaiono immediamente subito dopo che ho postato un articolo nel mio blog, quindi deve essere per forza qualcosa di automatico ma non riesco a capirne la funzione. Mistero…
24. gennaio 2011 at 17:26
Questo può succedere se in un nuovo post linki un articolo precedente. In questo senso sì, ti fai un “auto pingback”! Potrebbe essere questo il caso?
26. agosto 2011 at 18:29
[...] cambiamenti se non l’evidenziazione dell’autore, il gravatar più grande e la separazione di trackback e pingback dal flusso naturale dei commenti. Inoltre ne ho invertito l’ordine in modo da rendere più agevole la lettura della [...]