Sosyal paylaşım sitelerinin bir bir kapandığı bugün bu yazıyı yazmak ne kadar doğru, ne kadar ilgi çeker bilemiyorum. Ama olsun ben yine de paylaşacağım. Php ile içeriklerinizin sosyal paylaşım sitelerinde kaç kere paylaşıldığını/beğenildiğini çeken bir kod var aşağıda. Aslında bu kod daha fazla siteden kod çekebiliyordu ama sanırım zamanında ben bunu Facebook, Twitter ve Google Plus bilgilerini alabilecek şekilde sınırlandırmışım. Aracı bir site, kod kullanmadan direkt olarak sitelerin kendi sağladıkları API’ler yöntemiyle verileri getiriyor kod. Bu açıdan ek sitelerin yayın dururma, kısıtlamalarına takılmadan verinizi çekebiliyorsunuz.
Sosyal Paylaşım Sayılarını PHP ile çekmek
Aşağıdaki kod bir PHP class’ıdır. Bunu herhangi bir isimle kaydedip kullanabilirsiniz. Ben şimdilik sosyal_cek.php
olarak adlandırdığımız farz edeceğim. Kod gösterim alanında bulunan kodları alıp sizde bu isimle kaydedebilirsiniz.
Kod;
<?php class SosyalPaylasimCek { private $url, $timeout; function __construct($url, $timeout = 10) { $this->url = rawurlencode($url); $this->timeout = $timeout; } function twitter_getir() { $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 facebook_getir() { $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; } function googleplus_getir() { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, "https://clients6.google.com/rpc"); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . rawurldecode($this->url) . '","source":"widget","userId":"@viewer","groupId":"@self"},"jsonrpc":"2.0","key":"p","apiVersion":"v1"}]'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-type: application/json' )); $curl_results = curl_exec($curl); curl_close($curl); $json = json_decode($curl_results, true); return isset($json[0]['result']['metadata']['globalCounts']['count']) ? intval($json[0]['result']['metadata']['globalCounts']['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; } } ?>
Kodu buradan alıp kaydettiyseniz kullanımına geçebiliriz. Detayları kullanım alanında anlatacağım.
Kullanım;
Öncelikle bu kod bir class olduğu için dosyayı içeri aktarmalı ve sonrasında class tanımını yapmalıyız. Burada classın içine bulunan $url
değişkenini de atamalıyız. Aşağıdaki tanımda $scek
ile classı tanımlıyorum. Daha sonrasında class içindeki fonksiyonlarımızı kullanarak verileri getireceğiz. Fonksiyonlar aşağıdaki gibi işlem yaparlar;
twitter_getir()
: Class tanımında verilen linkin Twitter içinde kaç kere paylaşıldığını gösterir.
facebook_getir()
: Class tanımında verilen linkin Facebook içindeki paylaşım, beğeni ve yorum değerini gösterir.
googleplus_getir()
: Class tanımında verilen linkin Google Plus içindeki paylaşım (+1) değerini gösterir.
<?php include('sosyal_cek.php'); $scek=new SosyalPaylasimCek('http://wpadami.com'); //Website, sayfa linkiniz. http barındırmalıdır echo "Twitter :".$scek->twitter_getir()." <br />"; //Twitter paylaşım sayısını getirir echo "Facebook :".$scek->facebook_getir()." <br />"; //Facebook beğeni, paylaşım ve yorum sayısını getirir. echo "Google Plus :".$scek->googleplus_getir()." <br />"; //Google Plusone (+1) sayısını getirir ?>
Umarım düzgün şekilde anlatabilmişimidir. Herhangi bir sıkıntı ya da sorunuz olursa lütfen iletiniz.
Selametle