Как получить количество расшариваний соц.сетей в WordPress

Сегодня вы вряд ли найдете кого-то, кто не принадлежит к какой-либо социальной сети. Практически все социальные сети предлагают свои кнопки, которые облегчают процесс расшаривания контента с сайтах на их платформы. Принимая во внимание большую базу пользователей и высокую вовлеченность этих пользователей в социальные сети (такие, как Facebook, Twitter, Google+ и т.д.), владельцы сайтов и их администраторы часто добавляют соц.кнопки на свои сайты. В сегодняшней статье мы не будем писать еще один плагин для шаринга в соц.сети; мы научимся как программно получить количество поделившихся материалом в Facebook, Twitter, Google Plus, Pinterest на вашем сайте.

Получаем количество поделившихся в соц.сетях

В частности, давайте посмотрим как можно программно получить количество поделившихся в социальных сетях для определенной страницы.

Лайки и шаринги Facebook

Для того, чтобы получить количество раз того, сколько была лайкнута или расшарена странице в Facebook, необходимо пропустить ссылку страницы через Facebook Graph API http://graph.facebook.com/?id=.

Предположим, мы хотим получить количество лайков и расшариваний этой ссылки http://wpincode.com/kak-sozdat-vsplyvayushhuyu-formu-kontaktov-v-wordpress/, пропускаем ее через Graph API таким образом http://graph.facebook.com/?id=http://wpincode.com/kak-sozdat-vsplyvayushhuyu-formu-kontaktov-v-wordpress/ и получаем информацию в формате JSON со свойством shares, где и отобразится количество расшариваний.

{
   "id": "http://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 для вывода количества лайков и расшариваний http://wpincode.com/kak-sozdat-vsplyvayushhuyu-formu-kontaktov-v-wordpress/.

echo $facebook_like_share_count( 'http://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":"http://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( 'http://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( 'http://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('http://wpincode.com/wordpress-https');

Заключение

Итак, мы научились программно получать количество расшариваний для различных социальных сетей от их API, используя при этом PHP.

По всем вопросам и отзывам просьба писать в комментарии ниже.

Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.

VN:F [1.9.22_1171]
Rating: 3.8/5 (4 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
  • Виталий

    А для Вконтакте можно как-то сделать подобное?

    • ADv

      Можно, написав соответствующую функцию.
      К сожалению, готового решения у меня нет, иначе оно бы было указано в статье.

    • Frodo

      $vk_like_share_count = function ( $url ) {

      $vk_request = file_get_contents(‘http://vk.com/share.php?act=count&index=1&url=’.$url);

      $temp = array();

      preg_match(‘/^VK.Share.count(1, (d+));$/i’,$vk_request,$temp);

      return $temp[1];

      };

  • Frodo

    И если кому то понадобится ОДНОКЛАССНИКИ

    $odnoklasiki_like_share_count = function ( $url ) {
    $odnoklassniki_request = file_get_contents(‘http://www.odnoklassniki.ru/dk?st.cmd=extOneClickLike&uid=odklocs0&ref=’.$url);
    $temp = array();
    preg_match(«/^ODKL.updateCountOC(‘[dw]+’,'(d+)’,'(d+)’,'(d+)’);$/i»,$odnoklassniki_request,$temp);
    return $temp[1];
    };

  • Иван

    Спасибо!
    Вопрос на счёт Гугла.
    Кажется, в строке «https://clients6.google.com/rpc» ещё нужно «=GOOGLE_API_KEY»

    У вас работает без этого? А как его получить тоже не понятно.

Scroll To Top