はてなAPIを使ってWordPressの最新記事一覧リストにはてなブックマーク数を表示する
はてなAPIを使うとはてなでブックマークされている数や、エントリーの情報を取得する事ができます。
実験的にこのブログ(WordPress)ではてなブックマーク件数取得APIを使ってみたので、使い方などをまとめてみました。
はてなブックマーク件数取得API – Hatena Developer Center
はてなからもブックマーク件数を表示するコードが配布されていますが、APIを使って件数を取得すれば、独自のデザインや表示が可能です。
***2013/05/03 追記***
Javascript で表示した方が処理的によいみたいです。
以下の記事でWordPressでの表示方法も詳しく解説されています。
最新記事一覧リストにはてなブックマーク数を表示した完成形
このブログの個別記事のサイドバーには、最新記事を5件表示するようにしています。そこへはてなでブックマークされている数も表示させてみました。表示させてみた完成形が以下の画像です。(今はもう表示していません。)

記事にはてなブックマークが1以上あった場合は、ブックマーク数を表示し、ブックマークが1つもない場合は何も表示しません。ブックマーク件数部分のHTMLは以下のようなコードが出力されています。
<p class="hatena_count">Hatena Bookmark <span>5</span></p>
ブックマーク数を表示するコード
はてなブックマークから件数を取得するのには cURL というライブラリを使いました。
$url = esc_url( get_permalink() ); // ↑ WordPress個別記事URLを取得する $ch = curl_init(); // ↑ cURLを初期化 curl_setopt($ch, CURLOPT_URL, "http://api.b.st-hatena.com/entry.count?url=".urlencode( $url )); // ↑ はてなより情報を取得するURLを指定するオプション設定。urlencodeで$urlをエンコードする curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // ↑ 実行結果(curl_exec)を文字列で返すオプション設定 $hatena_num = curl_exec($ch); // ↑ 実行 curl_close($ch); // ↑ cURL終了
cURL よりも速度が遅いようですが、file_get_contents という関数でもデータを取得できるみたいです。
これで、$hatena_num の変数にはてなから取得したブックマーク数が入りました。以下のコードで、ブックマークがあった場合に件数を表示します。
if( !empty( $hatena_num ) ){
//↑ $hatena_num に数値が入っていたら以下の処理
echo '<p class="hatena_count">Hatena Bookmark <span>'. htmlspecialchars( $hatena_num, ENT_QUOTES , "UTF-8" ) .'</span></p>';
}
empty で変数に値が入っているかどうかを判断しています。
最新記事リスト全体のコード
完成形のコード全体は以下のようになっています。
<?php
$postslist = get_posts('numberposts=5&orderby=post_date&order=DESC"');
foreach ($postslist as $post) : setup_postdata($post);
?>
<article>
<h3><?php the_title(); ?></h3> // タイトル表示
<p class="thumbnail"><?php the_post_thumbnail(); ?></p> // アイキャッチ表示
// はてなから件数取得と表示
<?php
$url = esc_url( get_permalink() );
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.b.st-hatena.com/entry.count?url=".urlencode( $url ));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$hatena_num = curl_exec($ch);
curl_close($ch);
if(!empty($hatena_num)){
echo '<p class="hatena_count">Hatena Bookmark <span>'. htmlspecialchars( $hatena_num, ENT_QUOTES , "UTF-8" ) .'</span></p>';
}
?>
<p><?php echo mb_substr(get_the_excerpt(), 0, 25); ?>…</p> // 抜粋表示
</article>
<?php endforeach; ?>
No Comments & Tracbacks