Questo articolo è stato pubblicato nel 2013, quindi i contenuti non sono aggiornati e potrebbero non essere più validi.
Integrare i vari widget social all’interno di un sito è ormai prassi abbastanza comune. Tali widget hanno però il lieve difetto di rallentare il caricamento della pagina e di non integrarsi sempre perfettamente all’interno di ogni layout.
Immagina infatti di voler solo visualizzare il numero di condivisioni relative ai vari articoli, ma senza voler integrare i social widget all’interno della pagina.
Nella home page di questo blog ad esempio, nell’elenco degli ultimi post, ho voluto riportare il numero di retweet, di like e condivisioni su Facebook e anche di +1 per ogni post. Avrei potuto inserire i social widget di Twitter, Facebook e Google+ al di sotto di ogni post, ma mi sembrava più pulito ed elegante inserirli mediante una semplice riga di testo.
Per ottenere questo ho utilizzato il servizio SharedCount, che mette a disposizione un API per interrogare i vari social network e reperire le informazioni desiderate. E’ possibile utilizzare il servizio gratuitamente fino ad un massimo di 100.000 interrogazioni al giorno. I dati recuperati vengono inoltre mantenuti in cache per 5 minuti per velocizzare il tutto ed evitare richieste inutili.
L’implementazione di questa funzione su un sito Wordpress è banalissima.
È sufficiente ad esempio inserire una funzione simile nel file functions.php del proprio tema:
function social_shares() {
$url = get_permalink( $post_id );
$json = file_get_contents("http://api.sharedcount.com/?url=" . rawurlencode($url));
$counts = json_decode($json, true);
echo "Condivisioni social: " . $counts["Twitter"] ." retweet, " . $counts["Facebook"]["total_count"] . " mi piace e ". $counts["GooglePlusOne"] . " +1";
}
e richiamarla all’interno del template, dove la si desidera visualizzare mediante questo codice PHP:
social_shares();
Questo basta per visualizzare il numero di retweet, like, share e commenti su Facebook e Google +1. Per quanto riguarda Facebook è possibile scegliere se visualizzare solo i like (like_count), solo le condivisioni (share_count), solo i commenti (comment_count) o tutto insieme (total_count).
Ottima soluzione Tiziano!
Grazie Giuliano :) Prima utilizzavo le chiamate dirette ai vari social e salvavo i risultati sfruttando le Transients API per evitare continue interrogazioni. Questo sistema però è decisamente più comodo e facile da implementare.
Grazie, davvero molto utile…lo proverò senz’altro
Ciao Tiziano, credo di aver compreso i tuoi suggerimenti (sono alle prime armi con WP, perdonami se dirò sciocchezze), ma non capisco quando spieghi di “richiamarla all’interno del template”… Io pubblico di tanto in tanto articoli su WP e ho implementato un plugin che tiene conto delle condivisioni e per ogni articolo, anzi sotto ogni articolo, appare il numero relativo al social. Per esempio: Facebook, preceduto dal numero delle condivisioni. Ero alla ricerca di qualcosa di simile per i Like e mi sono imbattuto sui tuoi suggerimenti. Ho capito però (credo) che per vedere quanti sono i like si deve interrogare il sito SharedCount, indicare l’indirizzo del proprio sito e si vedranno visualizzati i valori. Sbaglio?
Come faccio per mettere (( social_shares(); )) su ogni articolo?
Inoltre, avrò la possibilità di vedere per ogni articolo, il numero dei like ricevuti, sotto all’articolo stesso, come accade per le condivisioni?.
Tiziano, scusa non so nemmeno se sono riuscito a spiegarmi, sono cotto ed è tardissimo.
Se mi chiarisci questi passi, proverei a fare questa cosa che mi pare davvero interessante. Un caro saluto e anche se sarò banale: beh, complimenti, nella prox vita vorrei avere una testa come la tua hahahahaha. Ciao, Giorgio.
Ciao Giorgio, la funzione social_shares(); va richiamata all’interno del template nel senso che devi inserire tale funzione all’interno dei file PHP del tuo tema. Dove inserirla però dipende dal tuo tema.
Personalmente però ti consiglio di adottare un approccio più pratico installando un plugin come https://it.wordpress.org/plugins/social-warfare/
Buongiorno Tiziano, grazie per la risposta solerte. Dunque ho dato un’occhiata al plugin che mi suggerisci, tuttavia questo non parrebbe assolvere a ciò che invece vorrei ottenere, ma è utile per le condivisioni. Una cosa che ho risolto.
Invece a me piacerebbe avere un contatore di like ricevuti da un articolo di wordpress, linkato sui social.
Tenterei pure con la funzione social-share che hai spiegato nell’articolo, proverei a mettere in coda al file functions.php la stinga delle istruzioni, ma poi non ho capito come renderla attiva su tutti gli articoli. Cioè dove devo inserire il comando: social_shares();
Ho provato a vedere sui plugin di WP se ce ne fosse uno che potesse fare al caso mio ma non ho trovato nulla, ma so per certo che esiste il modo, perchè lo vedop attivo in altri siti che sono originati da WP.
Ah, dimenticavo… Intanto buona domenica.
Ciao, dove inserirla dipende dal tema. Nella maggior parte dei temi è presente il file single.php che rappresenta il template utilizzato per i singoli articoli. Considera poi che SharedCount ormai supporta solo Facebook, Pinterest e StumbleUpon.
Ah grazie, Tiziano. Ho letto anche che adesso, come spieghi tu, non avremo più il supporto di Twitter… Peccato, questo rende il conteggio eventuale, un po’ svilito e comunque sarebbe una “conta” per difetto, venendo a mancare twitter. A questo punto desisterò da inutili tentativi che, vista la mia scarsa padronanza del mezzo potrebbero indurmi in qualche danno…
Comunque in tutta questa storia un vantaggio lo ho messo in valigia: ho conosciuto il tuo sito che inserisco tra i preferiti e mi piace pure linkarlo su facebook. Grazie di tutta la pazienza e delle info che mi hai dato. Continuo la mia ricerca di questo maledetto meccanismo che possa contare i like provenienti dai social in un post di un articolo di WP.
Un caro saluto.
Prego :) Tra l’altro sono proprio Twitter e LinkedIn che hanno abbandonato il supporto alla visualizzazione del conteggio delle condivisioni tramite api.