Сегодня вы вряд ли найдете кого-то, кто не принадлежит к какой-либо социальной сети. Практически все социальные сети предлагают свои кнопки, которые облегчают процесс расшаривания контента с сайтах на их платформы. Принимая во внимание большую базу пользователей и высокую вовлеченность этих пользователей в социальные сети (такие, как Facebook, Twitter, Google+ и т.д.), владельцы сайтов и их администраторы часто добавляют соц.кнопки на свои сайты. В сегодняшней статье мы не будем писать еще один плагин для шаринга в соц.сети; мы научимся как программно получить количество поделившихся материалом в Facebook, Twitter, Google Plus, Pinterest на вашем сайте.
Получаем количество поделившихся в соц.сетях
В частности, давайте посмотрим как можно программно получить количество поделившихся в социальных сетях для определенной страницы.
Лайки и шаринги Facebook
Для того, чтобы получить количество раз того, сколько была лайкнута или расшарена странице в Facebook, необходимо пропустить ссылку страницы через Facebook Graph API http://graph.facebook.com/?id=.
Предположим, мы хотим получить количество лайков и расшариваний этой ссылки https://wpincode.com/kak-sozdat-vsplyvayushhuyu-formu-kontaktov-v-wordpress/, пропускаем ее через Graph API таким образом http://graph.facebook.com/?id=https://wpincode.com/kak-sozdat-vsplyvayushhuyu-formu-kontaktov-v-wordpress/ и получаем информацию в формате JSON со свойством shares, где и отобразится количество расшариваний.
{ "id": "https://wpincode.com/kak-sozdat-vsplyvayushhuyu-formu-kontaktov-v-wordpress/", "shares": 1 }
Для того, чтобы получить количество лайков и расшариваний любой страницы в PHP, используем следующую функцию PHP:
$facebook_like_share_count = function ( $url ) { $api = file_get_contents( 'http://graph.facebook.com/?id=' . $url ); $count = json_decode( $api ); return $count->shares; };
Этот код использует функцию $facebook_like_share_count для вывода количества лайков и расшариваний https://wpincode.com/kak-sozdat-vsplyvayushhuyu-formu-kontaktov-v-wordpress/.
echo $facebook_like_share_count( 'https://wpincode.com/kak-sozdat-vsplyvayushhuyu-formu-kontaktov-v-wordpress/' );
Бонус: Получение количества лайков страницы Facebook практически идентично. Различие только в свойстве likes, вместо shares.
Код ниже будет выводить количество лайков официальной страницы WPinCode Facebook Page, доступных у нее.
$facebook_page_like_count = function ( $url ) { $api = file_get_contents( 'http://graph.facebook.com/?id=' . $url ); $count = json_decode( $api ); return $count->likes; }; echo $facebook_page_like_count( 'http://www.facebook.com/designmodo' );
Записи Twitter
Для того, чтобы получить количество раз, которое запись, контент или веб страница были твитнуты, нужно сделать API запрос к Twitter следующим образом: https://cdn.api.twitter.com/1/urls/count.json?url=http://web-page-url.com где http://web-page-url.com соответствует адресу страницы.
{ "count":1, "url":"https://wpincode.com/kak-sozdat-vsplyvayushhuyu-formu-kontaktov-v-wordpress/" }
По тому же принципу, как и код для лайков и расшариваний Facebook, код ниже выводит количество твитов для страницы.
$twitter_tweet_count = function ( $url ) { $api = file_get_contents( 'https://cdn.api.twitter.com/1/urls/count.json?url=' . $url ); $count = json_decode( $api ); return $count->count; }; echo $twitter_tweet_count( 'https://wpincode.com/kak-sozdat-vsplyvayushhuyu-formu-kontaktov-v-wordpress/' );
Пины Pinterest
Pinterest — это социальная сеть, которая позволяет пользователям делиться картинками, и открывать для себя новые увлечения путем публикации (также называемых «пинами» на Pinterest) картинок, видео и статье на свои собственные доски (например, коллекции пинов, обычно по определенной тематике).
Для того, чтобы получить количество раз, которое страница была расшарена в Pinterest, используйте код функции ниже:
$pinterest_pins = function ( $url ) { $api = file_get_contents( 'http://api.pinterest.com/v1/urls/count.json?callback%20&url=' . $url ); $body = preg_replace( '/^receiveCount\((.*)\)$/', '\\1', $api ); $count = json_decode( $body ); return $count->count; }; echo $pinterest_pins( 'https://wpincode.com/' );
P.S. Pinterest API выводит не полный JSON, потому как JSON заключен в скобки. Пришлось немного пошаманить, чтобы превратить ответ в полноценный JSON.
Google PlusOnes
Все обращения к API, которые делались прежде, использовали запрос GET. Для Google+ API нужен метод POST. Мы не будем использовать функцию file_get_contents() для отправки запроса к API, потому как она не умеет отправлять POST-запросы, посему возьмем на вооружение cURL.
Функция ниже делает запрос к Google+ API и возвращает количество +1 для ссылки.
$google_plusones = function ( $url ) { $curl = curl_init(); curl_setopt( $curl, CURLOPT_URL, "https://clients6.google.com/rpc" ); curl_setopt( $curl, CURLOPT_POST, 1 ); curl_setopt( $curl, CURLOPT_POSTFIELDS, '[{"method":"pos.plusones.get","id":"p","params":{"nolog":true,"id":"' . $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 intval( $json[0]['result']['metadata']['globalCounts']['count'] ); }; echo $google_plusones('https://wpincode.com/wordpress-https');
Заключение
Итак, мы научились программно получать количество расшариваний для различных социальных сетей от их API, используя при этом PHP.
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.