Coloro che hanno deciso di implementare sul proprio blog, insieme ai normali commenti di WordPress, anche i commenti via Facebook mediante il relativo plugin sociale, potrebbe chiedersi come risolvere il problema del conteggio complessivo dei commenti, inseriti in entrambi i modi, da mostrare nelle pagine dei post.
Esempio
Ben per far ci?? ho elaborato il seguente codice da implementare nel propio tema WordPress e grazie al quale otterrete automaticamente la somma del numero dei commenti inseriti tramite Facebook e WordPress su ogni vostro post.
Il codice seguente utilizza la comment FQL table (tramite la query link_stat) per ottenere il numero di commenti Facebook relativi ad una specifica URL. Come descritto dalle guide di Facebook sarebbe possibile anche utilizzare la Graph API (esempio: https://graph.facebook.com/?ids=http://example.com/), ma purtroppo con quest’ultimo metodo ho riscontrato che (misteriosamente) su alcune URL non viene restituito da Facebook il numero di commenti.
Prima di tutto aprite il file function.php del vostro tema WordPress ed inserite la seguente funzione.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// Ottenere il conteggio complessivo dei commenti Facebook e Wordpress function full_comment_count() { global $post; $url = get_permalink($post->ID); $fql = "SELECT comment_count FROM "; $fql .= "link_stat WHERE url = '".$url."'"; $apifql = 'https://api.facebook.com/method/fql.query?format=json&query='.urlencode($fql); $json = file_get_contents($apifql); $obj = json_decode($json); $fb_comments = $obj[0]->comment_count; $wpCount = get_comments_number(); $realCount = $fb_comments + $wpCount; if ($realCount == 0 || !isset($realCount)) { $realCount = 0; } return $realCount; } |
Fatto ci?? aprite il file single.php e cercate la funzione comment_number(), esempio:
1 |
<span><?php comments_number('0 Commenti','1 Commento','% Commenti'); ?></span> |
Inserite appena prima il codice di questa funzione (prima del tag relativo, che nell’esempio sopra ?? uno <span>) il seguente codice:
1 2 3 4 5 6 |
<?php $commentCount = full_comment_count(); if ( $commentCount == 0 ) {$numcomm = '0 commenti';} else if ( $commentCount == 1 ) {$numcomm = '1 commento';} else {$numcomm = $commentCount . ' commenti';} ?> |
Infine sostituite la funzione di default del conteggio dei commenti, che in questo esempio ?? comments_number('0 Commenti','1 Commento','% Commenti'); con echo $numcomm;
Il codice complessivo, nel file single.php con la modifica appartata, apparir?? in questa forma:
1 2 3 4 5 6 7 8 |
<?php $commentCount = full_comment_count(); if ( $commentCount == 0 ) {$numcomm = '0 commenti';} else if ( $commentCount == 1 ) {$numcomm = '1 commento';} else {$numcomm = $commentCount . ' commenti';} ?> <span><?php echo $numcomm ?></a></span> |
Ora provate in un post ad inserire un commento sia via Facebook che dal modulo di WordPress e testate se il conteggio viene visualizzato correttamente.
Ricordo che, con relative modifiche, utilizzando questo codice sarebbe possibile ottenere e visualizzare altre informazioni Facebook relative alla pagina di un post. Queste informazioni aggiuntive sono elencate nella guida FQL della query link_stat.
Questo ?? tutto, se avete dei quesiti o riscontrate qualche problema chiedete pure tramite i commenti.
Alla prossima risorsa