はてな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