WordPress

【REST】Twitterから特定のハッシュタグを検索して記事に載せてみよう(Twitter API 1.1):【79日目】WordPress1日1プラグイン

更新日:

ようこそのお運びで、厚く御礼申し上げます。
79日目です。前回Twitter APIを使って、ツイートを取得する方法を書きましたが、今回はハッシュタグを検索してみようと思います。

Twitterからどんな検索ができるのか?試してみるにはこちらを参照。

Twitter APIには、検索内容を指定してツイートを取得することができます。
まずは、公式のドキュメントはこちらから

https://dev.twitter.com/docs/api/1.1

設定や自分のツイートを表示するには前回参照

前回同様今回も使ってみよう!!ということで、「Twitter APIの制限等(15分間に180回)もあるので実用性はない」と思ってください。※キャッシュについて今回書いていません。

今回の検索項目

  • ハッシュタグ「#Nirvana」
    ※今回ロックの殿堂入りしたので・・・

OAuth認証を行い、条件にあうツイートを取得。

GET search/tweetsを参照してコードを書いていきます。

OAutu認証部分は前回、もしくはコードを参照してください。

$obj = new TwitterOAuth($apiKey,$apiSecret,$accessToken,$accessTokenSecret);

今回は、検索なので「https://api.twitter.com/1.1/search/tweets.json」となります。

3番目の引数に取得する検索条件を設定します(配列)。
'q':検索する文字列で記入
'lang':検索する言語(デフォルトはeu)
'count':取得するツイートの件数

$req = $obj->OAuthRequest('https://api.twitter.com/1.1/search/tweets.json',
      'GET',
       array('q' =>'#Nirvana',
             'lang' =>'ja',
              'count'=>'10'));

json_decodeで取得した値(json)をデコードします(配列)。

$tweets = json_decode($req);

取得した値をforeachを使って出力します。

if (isset($tweets) && empty($tweets->errors)) {
      $tweets = $tweets->statuses;
      foreach ($tweets as $val) {
         //出力内容を記入
      }
}

ANDやOR条件の設定は。

検索条件を設定する、'q'に半角スペースを空けて「OR」や「ANDを記入します。

$req = $obj->OAuthRequest('https://api.twitter.com/1.1/search/tweets.json',
      'GET',
       array('q' =>'#Nirvana AND #TheRockandRollHallofFame',
             'lang' =>'ja',
              'count'=>'10'));

特定にユーザのみ取得したい場合は。

検索条件を設定する、'q'に半角スペースを空けて「from:ユーザ名」を記入します。

$req = $obj->OAuthRequest('https://api.twitter.com/1.1/search/tweets.json',
      'GET',
       array('q' =>'#Nirvana from:userName',
             'lang' =>'ja',
              'count'=>'10'));

特定ユーザを条件に入れたくない場合。

検索条件を設定する、'q'に半角スペースを空けて「-from:ユーザ名」を記入します。

$req = $obj->OAuthRequest('https://api.twitter.com/1.1/search/tweets.json',
      'GET',
       array('q' =>'#Nirvana -from:userName',
             'lang' =>'ja',
              'count'=>'10'));

ご近所での発言を検索する。

検索条件を設定する'q'に半角スペースを空けて「near:場所名 within:範囲」を記入します。

$req = $obj->OAuthRequest('https://api.twitter.com/1.1/search/tweets.json',
      'GET',
       array('q' =>'#Nirvana near:大分市 within:10km',
             'lang' =>'ja',
              'count'=>'10'));

※もちろん普通のtwitterでもつかえます。いまいち確実な場所の書き方がわかっていませんが。

その他、検索条件の設定

その他、twitterの検索はまだまだ色々できるみたいです。
公式のドキュメントはここからどうぞ。"q"に直接設定できるみたいです。

https://support.twitter.com/articles/249059-

ショートコードを使って、検索条件を設定してみる。

ショートコードは"paka3Tweet"にします。
属性は件数「count」、検索ワード「word」、言語は「lang」にします。

add_shortcode('paka3Tweet','shortCode_myTweet');
function shortCode_myTweet($atts){
     extract( shortcode_atts( array(
      'count' =>10,         //表示数(初期値10):
      'word' => '#news' ,   //検索ワード(初期値#news),
      'lang' => 'ja',       //言語(初期値ja)
      ), $atts) );
・・・
}

ショートコードから設定された値を、TwitterAPIの関数に渡します。

$req = $obj->OAuthRequest('https://api.twitter.com/1.1/search/tweets.json',
                           'GET',
                            array('q'    =>sprintf(esc_html("%s"),$word),
                                 'lang' =>sprintf(esc_html("%s"),$lang),
                                  'count'=>sprintf(esc_html("%s"),$count)
                             ));

ショートコードを記事に記入します。

記事に書き込むショートコードの例です。

[paka3Tweet word="#Nirvana" count=20]

前回と同じく、こちらのライブラリを使います。

OAuth認証を行うために、別のライブラリを読み込んで使います。

https://github.com/abraham/twitteroauth

こちらからダウンロードして、「twitteroauth」ディレクトリを「作成するプラグイン」ディレクトリに入れてしまいます。

コードをプラグイン用のファイルにします

Paka3Tweet.php」というファイルを作成し、以下のコードを記入します。

このファイルを[wp-content]>「plugins」ディレクトリに入れ、管理画面で有効にして完了です。

※ディレクトリ構成は前回と同じく、こんな感じ
140415-0004

今回のまとめ

今回もTwitterから記事を取得してみる関数を書いてみました。大枠はライブラリのおかげではありますが・・・(^^)。ただTwitterAPIにも制限があるので、このまま運用するのはよろしくないみたいです
対策としては、「キャッシュを何処かに作るもしくは制限を受けない「StreamingAPI」を使う必要がでてきそうですね。とうことで、今回のコードはあくまでサンプルということで。

-WordPress
-, , ,

Copyright© アルパカ@ラボ , 2024 All Rights Reserved Powered by AFFINGER5.