はてなAPIを使ってWordPressの最新記事一覧リストにはてなブックマーク数を表示する

はてなAPIを使うとはてなでブックマークされている数や、エントリーの情報を取得する事ができます。

はてなブックマークの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; ?>

Related Article

No Comments & Tracbacks

Leave a Comment

Emailは公開されません。*は必須項目です。


*


Categorys

Tags

CSS3 ダッシュボード ヘッダー トラブル コードサンプル コンテンツ スライドショー jQueryプラグイン php 引っ越し 素材 お知らせ JavaScript Facebook CSS カテゴリー 投稿タイプ IE HTML5 Shareボタン seo レスポンシブ Photoshop タクソノミー ナビゲーション カスタムメニュー Git Macアプリ サイドバー WPセキュリティ SVG iTunes PHPリファレンス API WP使い方 query_posts データベース get_posts() 条件分岐 コメント function RSS スマートフォン Sass/Compass さくらVPS