以前、Rarst氏が提供した、WordPressでTwitterフォロワー数をテキストで表示できるコードについて記事にしました。この記事では、WordPressでTwitterフォロワー数を表示できる、より高度で洗練されたコードを共有します。このスクリプトもRarst氏の提供によるものです。
機能
この機能はフォロワー数に限定されません。Twitter users/show APIメソッドによって返されるネストされていない値であれば、どのような値でも取得できます。
キャッシュは2レベルあります。
- クエリされた値は、$interval秒間、WPオプションを使用してデータベースに配列として保存されます。
- API応答はメモリに保存されるため、複数のAPIリクエストを生成することなく、任意の数のフィールドをクエリできます。
これは、API制限を使い果たす心配なく、複数の値と複数のユーザーを同時に安全に使用できるはずです。
チュートリアル
まず、テーマのfunctions.phpファイルを開き、次のコードを追加します。
function rarst_twitter_user( $username, $field, $display = false ) {
$interval = 3600;
$cache = get_option('rarst_twitter_user');
$url = 'http://api.twitter.com/1/users/show.json?screen_name='.urlencode($username);
if ( false == $cache )
$cache = array();
// if first time request add placeholder and force update
if ( !isset( $cache[$username][$field] ) ) {
$cache[$username][$field] = NULL;
$cache[$username]['lastcheck'] = 0;
}
// if outdated
if( $cache[$username]['lastcheck'] < (time()-$interval) ) {
// holds decoded JSON data in memory
static $memorycache;
if ( isset($memorycache[$username]) ) {
$data = $memorycache[$username];
}
else {
$result = wp_remote_retrieve_body(wp_remote_request($url));
$data = json_decode( $result );
if ( is_object($data) )
$memorycache[$username] = $data;
}
if ( is_object($data) ) {
// update all fields, known to be requested
foreach ($cache[$username] as $key => $value)
if( isset($data->$key) )
$cache[$username][$key] = $data->$key;
$cache[$username]['lastcheck'] = time();
}
else {
$cache[$username]['lastcheck'] = time()+60;
}
update_option( 'rarst_twitter_user', $cache );
}
if ( false != $display )
echo $cache[$username][$field];
return $cache[$username][$field];
}
使用方法
関数を貼り付けたら、WordPressの任意のテンプレートファイルでコードを使用できます。以下のコードを貼り付けるだけです。
echo rarst_twitter_user('wpbeginner', 'name').' has '.
rarst_twitter_user('wpbeginner', 'followers_count').' followers after '.
rarst_twitter_user('wpbeginner', 'statuses_count').' updates.';
上記のコードは次のように表示されます。
WPBeginnerは1300回の更新を経て5846人のフォロワーを獲得しました。
出典: Rarst


Aleks
誰か、自分のTwitterユーザー名をどこに入力したか教えてください。どこにも見当たらないんです…それに、どうやっても機能しないんです…どんなにやっても…ユーザー名が出てこないんです。今、完全に基本的な状態にしておいても、ユーザー名に関する反応は全くありません…表示されるのは「更新後にフォロワーあり」…
それだけです…それ以外は何も…
wpbeginner
使用セクションで、「wpbeginner」をあなたのTwitter名に置き換えてください。
Downhill_MC
これは素晴らしいコードです。テキストに埋め込むための関数を作成する可能性はありますか(のようなもの)。downhill_mc
サンディープ
例で示されているように、これらのコードをカスタムTwitter画像にどのように追加すればよいか教えていただけますか?
編集スタッフ
CSSを使用する必要があります。残念ながら、このサイトではそれらのチュートリアルは作成していません。
管理者
Ozh
(シンタックスハイライトされた、きれいにフォーマットされたコードを表示すべきです、本当に)
Rarst
time()と60の間に+がなくなっていることに気づきました
編集スタッフ
修正ありがとうございます。皆さんが利用できるように素晴らしいスニペットを提供していただき、本当に感謝しています。あなたの努力は本当に高く評価されています。
管理者
アンジェロ・ベルトラン
いいですね!柔軟性が気に入りました。Cheers。
Rarst
Glad you found it useful.
Old snippet still works but it got kinda outdated and spread around a lot – it was getting hard to answer questions and correct outdated parts all the time.
こちらは少し大きくなりますが、より多くのデータを表示したり、同時に異なるユーザー名を表示したりするための機能が大幅に拡張されています。
より適切に維持するつもりですので、私のブログのページでフィードバックや提案を歓迎します。