WordPress: Commenti e Trackbacks/Pingbacks Separati
Questo articolo fa parte di una serie di appunti che comprendono dritte su Wordpress, modifiche apportate su Lab46 e memo per uso futuro. Se ti sono utili lascia un commento.
Tutti i Wordpress Tips qui!

Sei in grado di far lasciare ai lettori del tuo sito innumerevoli commenti? E tanti altri ti citano nei propri siti?
Beh, allora è il momento di fare ordine! E se non hai problemi di ordine tanto vale prevenire per il futuro!
Già, perché generalmente nelle impostazioni di default del tuo tema Commenti, Trackbacks e Pingbacks sono raccolti tutti assieme a fondo pagina. E se il numero di commentatori inizia a farsi importante, sicuramente a fondo pagina di ogni tuo articolo non si capirà un tubo!
Molta confusione = continua interruzione = troppo fastidio = poca leggibilità = breve navigazione = no discussione (wow, pensavo di non fermarmi più): è una catena insomma.
Vuoi sapere cosa ti consiglio in questo articolo?
Bisogna separare i Commenti da Trackbacks e Pingbacks. L’ho appena fatto e come sempre ci sono diverse possibilità per farlo.
1. La via più facile e rapida
Ti consiglio questo metodo se non ti piace smanettare con il codice e pensi che WordPress sia fenomenale proprio per le innumerevoli aggiunte che si possono fare via Plugins.
Ci ha pensato ancora una volta Ghido con il suo Plugin Trackbacks Apart.
2. La via di mezzo
Se come me preferisci quando è possibile modificare e ottimizzare a mano il tuo WordPress facendo a meno dei plugins, allora ci facciamo subito una spaghettata.
Le modifiche sono relative al solo file comments.php (salvane una copia di backup per sicurezza):
Nel Loop dei commenti devi far visualizzare solo i commenti, senza il resto. Per far ciò dopo
<?php foreach ($comments as $comment) : ?>
inserisci
<?php $comment_type = get_comment_type(); ?>
<?php if($comment_type == ‘comment’) { ?>
e prima di
<?php endforeach; /* end for each comment */ ?>
inserisci
<?php } /* End of is_comment statement */ ?>
Ora crea un nuovo Loop per Trackbacks e Pingbacks. Scendi un po’ più giù sempre nel file comments.php e prima di
<?php else : // this is displayed if there are no comments so far ?>
inserisci
<h3>Trackbacks/Pingbacks</h3> <ol></ol>
Note:
- Cambia il tag del titolo (<h3>) secondo lo stile del tuo tema;
- Il tag <ol> crea una lista numerata. Usa il tag che più ti fa comodo;
- Personalizza eventualmente con il CSS.;
3. La via perfetta
Non appesantisce la piattaforma con un plugin che si può evitare prevedendo delle modifiche ai file comments.php e functions.php.
Anche il functions.php? Già, è quella che ti consiglio perchè aggiorna anche il counter dei commenti senza tener conto del numero di trackbacks/pingbacks.
Inserisci questo codice nel file functions.php per separare i commenti dai trackbacks/pingbacks e aggiornare il numero dei commenti per ogni post:
add_filter('comments_array', 'filterComments', 0);
add_filter('the_posts', 'filterPostComments', 0);
//Updates the comment number for posts with trackbacks
function filterPostComments($posts) {
foreach ($posts as $key => $p) {
if ($p->comment_count <= 0) { return $posts; }
$comments = get_approved_comments((int)$p->ID);
$comments = array_filter($comments, "stripTrackback");
$posts[$key]->comment_count = sizeof($comments);
}
return $posts;
}
//Updates the count for comments and trackbacks
function filterComments($comms) {
global $comments, $trackbacks;
$comments = array_filter($comms,"stripTrackback");
$trackbacks = array_filter($comms, "stripComment");
return $comments;
}
//Strips out trackbacks/pingbacks
function stripTrackback($var) {
if ($var->comment_type == 'trackback'
|| $var->comment_type == 'pingback') { return false; }
return true;
}
//Strips out comments
function stripComment($var) {
if ($var->comment_type != 'trackback'
&amp;&amp; $var->comment_type != 'pingback') { return false; }
return true;
}
Ora passiamo alla modifica del file comments.php. Individua il Loop dei Commenti (la parte di codice che è ripetuta per tutti i commenti) che generalmente inizia con
<?php foreach ($comments as $comment) : ?>
e finisce con
<?php endforeach; /* end for each comment */ ?>
e subito dopo inserisci il seguente codice:
<h2>Trackbacks/Pingbacks</h2> <ol><!-- Inzio Codice per i trackbacks/pingbacks --> <li>id="comment-"> <cite></cite> Says: comment_approved == '0') : ?> <em>Your comment is awaiting moderation.</em> <small><a href="#comment-<?php comment_ID() ?>"></a></small> <small><a href="#comment-<?php comment_ID() ?>"> at </a></small> <small></small> <!-- Fine Codice trackbacks/pingbacks --></li> </ol>
Ovviamente puoi cambiare e personalizzare il Codice del Loop per i trackbacks/pingbacks a piacimento.
Conclusioni
A prescindere da come tu voglia realizzare o meno la modifica, come scrive anche Francesco, i tuoi commenti meritano di essere migliorati.
Ti sei convinto?
Let me know…
Photo | night86mare

Italiano
aprile 8, 2010 - 6:41 am
Bella guida! Grazie per la condivisione!
aprile 8, 2010 - 10:46 am
Purtroppo sono a Londra e il lavoro non mi permette di prepararne altre come vorrei…