2013/9/26

Facebookページから情報を取得してWordPressに投稿する

ユレッジでは、もしゆれというJ-SHISが提供するスマホアプリのFacebookページから防災トピックスの情報提供を受けています。

もしゆれ Facebookページ

これただ、最新の20件だけを取得して表示するようにしていたのですが、勿体ないなあと思って、アーカイブするようにしました。基本的にはFacebookページから取得した情報を、WordPressに記事として投稿するということですね。

require_once("../../../wp-config.php");
require 'fb_image/facebook.php';
require 'fb_image/config.php';

FacebookのPHP SDK使ってます。

PHP SDK

$number = fopen('/count.txt, 'r');
$currentnumber = fgets($number);
fclose($number);
try {
  $pages = $facebook->api('/facebookpage/feed?since='.$currentnumber,'GET', array('limit' => 20));
} catch (FacebookApiException $e) {
  error_log($e);
}

テキストファイルに最終の投稿のIDを保存しておいて、それ開いてそれ以降の投稿を取って来ます。

$cnt = 0;
  foreach ($pages['data'] as $page) {
    if($cnt == 0) {
      $sinceid = $page['id'];
    }
    $id = $page['id'];
    $message = $page['message'];
    $pos = stripos($message, 'http://');
    if (!($pos === false)) {
      $message = substr($message, 0, $pos);
    }
    $pos = stripos($message, 'https://');
    if (!($pos === false)) {
      $message = substr($message, 0, $pos);
    }
    if(mb_strlen($message) > 200) {
      $message = mb_strimwidth($message,0,200,"…", 'utf8');
    }
    $url = $page['link'];
    if(empty($url)) {
      $url = "https://www.facebook.com/facebookpage";
    }
    $time = $page['created_time'];
    $time = strtotime($time);
    $time = date('Y-m-d H:i:s', $time);

    $my_post = array();
    $my_post['post_title'] = $message;
    $my_post['post_status'] = 'publish';
    $my_post['post_author'] = 1;
    $my_post['post_date'] = $time;
    $my_post['post_category'] = array(1);

    if(!empty($time)) {
    $id = wp_insert_post($my_post);
    add_post_meta($id, 'url' , $url, true);
    }
    $cnt++;
}

取得した情報を自分の欲しいように整形して、それを記事のタイトルとして保存、シェアされているリンク先はカスタムフィールドに突っ込んで、後はテーマ側で、記事のタイトルにリンク貼って、このphpをCronで回せば、Facebookページでシェアされたリンクとコメントが特定のカテゴリに溜まっていくので。

if(!empty($sinceid)){
$number = fopen('count.txt', 'w');
$status = fwrite($number, $sinceid);
fclose($number);
}

で最後に最新の投稿IDを保存しておきます。こんな感じでユレッジには防災トピックスがアーカイブされるようになりました。

防災トピックス – ユレッジ : 日本の「揺れやすさ」と地震防災を考えるサイト

これ元々、僕のTwitterアカウントのログを保管するブログでXMLRPCでやっていたのを、WordPress内部でやるようにして、Facebookページから情報を取得してWebサイトに表示するスクリプトと組み合わせたものです。

kosuk.hourly

まあ色々実験しておくと、たまに使いどころ出てくるものです。今回はテキストとリンクだけですが、シェアされた写真のURL取得してアイキャッチ画像に突っ込むとか色々できます。多分。

加藤 康祐 / 企画・設計

プランナー、デザイナー。加藤康祐企画設計代表。Webデザインを入り口に、2005年よりフリーランスとしてのキャリアスタート。主な仕事としてベンチャー企業でのサービスのUXデザイン、独法との防災メディアの運営、社会的養護の子どもたちの自立を支援するNPOのサポート。ラグビーと料理、最近イラスト。

加藤康祐企画設計

是非、フォローしてください!
Twitter / Instagram

(2012-10-5)
売り上げランキング: 14,705
100円