メシのタネ

メシのタネになる、Laravelや設計思想の技術配信サイト


【WordPress】テーマにデフォルトでついてるTwitterウィジェットを少し拡張した話

,

  1. WordPress
  2. 【WordPress】テーマにデフォルトでついてるTwitterウィジェットを少し拡張した話

wpppppppp

何を隠そう当ブログではWPZOOMっていうWebスタジオのテーマのMeetaって奴を使っております。何時もお世話になっております。

このWPZOOMのテーマはデザインがAwesomeなのはもちろん、テーマ用の管理画面があり、設定内容がある程度充実しております。そしてさらに、テーマ用のWidgetがあり、Twitterで呟いた内容を出せたり、最近の投稿のアイキャッチが出せるのでプラグインがなくても、僕みたいなのが運用するには十分だったりします。

が、が、ですね。
Twitterの呟きにプロフィール画像が出てこないんですよ。これは頂けないと思ったので、軽くコードを見てみました。

TwitterAPI

こういうツイートの内容取得する様なツールはTwitterAPIを使ってます。
APIっていうのはWebの場合、あるルールにそって、このデータくれと
データ持ってるアプリケーションにリクエストを投げると、
へいへいわかりましたと、データをくれるやつのことです。

TwitterAPI使う場合大体使うファイルがある

twitteroauth.phpっていう、PHP認証ライブラリを使ってる場合が多いので
ThemeのフォルダをGrepとかフォルダ内検索とかで検索して、探しましょう。
大体、twitteroauth.phpの入ってるtwitteroauthってフォルダの外に
twitter.phpみたいな制御用のphpファイルがあるはずです。

この方法で見つからない場合

認証用のライブラリを使ってないか別の言語で取得してる可能性があります。
その場合は、statuses/user_timelineなど、HTTPRequestパラメータを使って検索していくのが良いと思います。

リクエストを送ってる箇所を探す

制御用のファイルをでれーっと見てると

</p>
<p>$this-&gt;connection-&gt;get( 'statuses/user_timeline', $params );</p>
<p>

getってメソッドが見つかります。
ここでデータの取得をやっていて、$paramesに欲しいデータが書いてあります。

でもこの第一パラメータの’statuses/user_timeline’が
意味がわかんないので、このパラメータをぐぐります。

この第一パラメータはリクエストの種別だと僕は思うので、
便宜的にこの記事でリクエストって呼ぶ事にします。

よほどマニアックなリクエストじゃない限り、日本語の説明を誰かがしてくれてます。

で、今回の件はこのリクエストに対しての$paramsが

</p>
<p>          //before</p>
<p>               $params = array(<br />
                    'screen_name' =&gt; $username,<br />
                    'count' =&gt; $num,<br />
                    'trim_user' =&gt; true, //ユーザーの詳細情報が不要?<br />
                    'contributor_details' =&gt; false,<br />
                    'include_entities' =&gt; false<br />
               );</p>
<p>          //after</p>
<p>               $params = array(<br />
                    'screen_name' =&gt; $username,<br />
                    'count' =&gt; $num,<br />
                    'trim_user' =&gt; false, //ユーザーの詳細情報が不要?<br />
                    'contributor_details' =&gt; false,<br />
                    'include_entities' =&gt; false<br />
               );<br />

今回のケースだとユーザーの詳細情報が不要?
って質問に対してtrueだったから詳細情報が取得せず、
画像を表示してなかったのです。

リクエストを出力している箇所

リクエストを受ける変数をループさせてメッセージを出力してる箇所を探します。
だいたいおんなじファイルの中にあると思います。

さっきの

<br />
$mes = $this-&gt;connection-&gt;get( 'statuses/user_timeline', $params );<br />

これを受けてる変数を仮に$mesとしましたが、
この$mesをforeachしてるとこを探します。

そうすると、1行1行オブジェクトデータが出力されてくるので
PHPとAPIのルールに沿ってプロフィールのイメージがある場所へ
アクセスして、データを受け取ります。

<br />
$img = $mes-&gt;user-&gt;profile_image_url<br />

こんな感じです。
後はこの$imgをループの好きなとこで吐き出せばOKです。

まとめ

・TwitterAPI使ってる場合、大体twitteroauth.phpがあるのでまずそのファイルを検索する
・twitteroauth.phpが入ってるフォルダの外側にあるtwitterapi制御用のPHPを探す
・TwitterAPIにリクエストを送ってる箇所を探す
・どんなリクエストしてるのか調べる
・リクエストのパラメータを自分好みに設定する(今回はプロフの画像を取得できるように)
・受け取ったデータから、欲しいデータを受け取って出力する

こんな感じで出来ると思います。
凄いしょぼいですけど、TwitterAPIの記事もかつて書いたので
もし気になったら見てみてくださいー。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.