Мне очень нравится иметь счетчик на моих блогах. Я заметил, что это действительно побуждает посетителей делиться самим контентом. Поскольку там нет плагинов sharepount WordPress, которые я на самом деле нахожу удовлетворительными (большинство из них способствуют большому количеству вызовов), я сам написал код.Кэширование пользовательских счет в социальных сетях WordPress
Он работает идеально, но все же замедляет мой сайт. Так что я предпочел бы кеши и обновления один раз в час или около того. Я не знаю, как управлять этим, хотя ... Любые идеи?
Это то, что я кладу в функции темы файла:
class shareCount {
private $url,$timeout;
function __construct($url,$timeout=10) {
$this->url=rawurlencode($url);
$this->timeout=$timeout;
}
function get_tweets() {
$json_string = $this->file_get_contents_curl('http://urls.api.twitter.com/1/urls/count.json?url=' . $this->url);
$json = json_decode($json_string, true);
return isset($json['count'])?intval($json['count']):0;
}
function get_fb() {
$json_string = $this->file_get_contents_curl('http://api.facebook.com/restserver.php?method=links.getStats&format=json&urls='.$this->url);
$json = json_decode($json_string, true);
return isset($json[0]['total_count'])?intval($json[0]['total_count']):0;
}
private function file_get_contents_curl($url){
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_TIMEOUT, $this->timeout);
$cont = curl_exec($ch);
if(curl_error($ch))
{
die(curl_error($ch));
}
return $cont;
}
}
И это то, что я использую в single.php:
<!-- Begin mod: Add share counter -->
<span class="share-count">
<?php
$obj=new shareCount(get_permalink($post->ID));
echo $obj->get_tweets() + $obj->get_fb();
?>
</span>
<span class="share-text">
keer gedeeld
</span>
<!-- End mod: Add share counter -->
Тогда я также добавить некоторые CSS.
Вы можете взглянуть на API Transients, чтобы временно кэшировать подсчеты. См .: http://codex.wordpress.org/Transients_API – vicente