WordPressにはてなスターボタンを設置

はてなスターのトークンを取得

はてなにログインしてから、はてなスターのページに行き、ユーザーページを開きます( http://s.hatena.ne.jp/netcraft/ など)。このページで一番下の「外部のブログサイトを登録する」で、自分のブログのURLを入力します。

そうすると、ブログタイトルを自動取得してリストに追加され、以下のメッセージが表示されます。

<

blockquote>以下のコードをブログテンプレートのhead内に追記してください。
うまく表示されない場合ははてなスターをブログに設置するにはをご参照ください。
このメッセージは最初の☆が付けられた際に消えます。

<script type="text/javascript" src="http://s.hatena.ne.jp/js/HatenaStar.js"></script>
<script type="text/javascript">
Hatena.Star.Token = '************';
</script>

このJavaScriptをコピーしておきます(トークンはブログごとに違います)。

WordPressにはてなスターを設置

上記でコピーしたJavaScriptを、WordPressブログ内のHTMLに記述します。記述する場所はどこでも良いのですが、ヘッダーが望ましいでしょう。テンプレートでヘッダーが定義されている場合はそちらに記述しますが、私の場合はPageLinesというテーマを使っているので、WordPress管理画面からPageLines→Site Options→Custom Code→Header Scriptsから入力しました。PageLinesの場合、ここに入力しておくとDBに登録されるので、テンプレートをアップデートしてもカスタムヘッダーは出力されます。

はてな公式サイトによると、これだけで、はてなスターボタンが表示される場合もあるようですが、私の場合は表示されませんでした。そこで、はてなスター日記の解説を読んで、以下のJavaScriptも記述しました。

Hatena.Star.SiteConfig = {
entryNodes: {
'div.hentry-pad': {
uri: 'h1 a',
title: 'h1',
container: 'h1'
},
'hgroup': {
uri: 'h2 a',
title: 'h2',
container: 'h2'
},
'hgroup.post-title': {
uri: 'h4 a',
title: 'h4',
container: 'h4'
}
}
};

この内容は各WordPressのテンプレートに応じて書き換える必要があります。意味としては、divタグのhentry-padクラス内のH1タグの中身の後ろにはてなスターボタンを設置(アーカイブページ用。URL、タイトルはH1から取得)、hgroupタグのH2タグの後ろにもはてなスターボタンを設置(トップページ用)、hgroupタグのpost-titleクラスのh4タグの後ろにもはてなスターを設置という指定になります。この内容は囲みタグに応じて変更しましょう。

注意点としては、見出し要素にはてなスターボタンを設置する場合、その見出しは、パーマリンクを持っていなければいけないということです。また、そのパーマリンクに見出しタグがリンクしていなければいけません。

私のブログの場合のテンプレート修正

私のブログの場合、アーカイブページのタグは、自分自身のページにパーマリンクを貼っていなかったので、PageLinesのテンプレートを以下のように修正しました。修正したファイルは、/wp-content/themes/pagelines/includes/class.posts.phpです。

        if( is_page() && pagelines_option('pagetitles') && ! has_filter
         ( "pagelines_no_page_title_{$pagelines_ID}" ) ) {
            $title = sprintf( '>h1 class="entry-title pagetitle"/\</>a href='.get_permalink($post).'/\</%s>/a/\</>/h1/\</',
              apply_filters( 'pagelines_post_title_text', get_the_title() ) );
        } elseif(!is_page()) {

            if ( is_singular() )
                $title = sprintf( '>h1 class="entry-title"/\</>a href='.get_permalink($post).'/\</%s>/a/\</>/h1/\</',
                 apply_filters( 'pagelines_post_title_text', get_the_title() ) );

H1タグ内でget_permalink()を呼ぶように修正しています。

これではてなスターを、アーカイブページ、トップページ、カテゴリーページ、月別アーカイブページ全てに設置できました。

快適なはてなスターライフを!

私のブログは過疎っているブログなので、はてなスターがつくことは滅多にないと思いますが、facebookのいいねと同じくスターをもらえる機会があるならば、ぜひ承認欲求を満たしたいですよねw WordPressやブログに限らず、はてなスターボタンは設置できるので、皆さんも設置されてはいかがでしょうか?次は私のTumblrの方にも設置してみようかな…。