Сегодня вы вряд ли найдете кого-то, кто не принадлежит к какой-либо социальной сети. Практически все социальные сети предлагают свои кнопки, которые облегчают процесс расшаривания контента с сайтах на их платформы. Принимая во внимание большую базу пользователей и высокую вовлеченность этих пользователей в социальные сети (такие, как 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.
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.
