ソーシャルボタンをWordPressに設置してみる Twenty Thirteen向け

facebookのいいねボタンなどをブログに設置

設置するコード

wordpressのプラグインやブログパーツを使わずに設置する方法。設置するコードは以下のとおりで、標準テーマTwenty Thirteenを前提にしたHTMLとしてある。

上から

facebook
twitter
google+
はてなブックマーク

としてある。

<div id='gallery-social' class='gallery gallery-size-thumbnail'>
	<dl class='gallery-item'>
		<dt class='gallery-icon landscape'>
                        <div class='fb-like' data-href='<?php the_permalink();?>' data-send='false' data-layout='box_count' data-width='450' data-show-faces='true'></div>
		</dt>
	</dl>

	<dl class='gallery-item'>
		<dt class='gallery-icon landscape'>
                        <a rel='nofollow' href='https://twitter.com/share' class='twitter-share-button' data-count='vertical' data-url='<?php the_permalink();?>' data-text='<?php the_title();?>'>Tweet</a><script type='text/javascript' src='//platform.twitter.com/widgets.js'></script>
		</dt>
	</dl>

	<dl class='gallery-item'>
		<dt class='gallery-icon landscape'>
                        <script type='text/javascript' src='https://apis.google.com/js/plusone.js'></script><g:plusone size='tall' href='<?php the_permalink();?>'></g:plusone>
		</dt>
	</dl>

	<dl class='gallery-item'>
		<dt class='gallery-icon landscape'>
                        <a href="http://b.hatena.ne.jp/entry/<?php the_permalink();?>" class="hatena-bookmark-button" data-hatena-bookmark-title="<?php the_title();?>" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="このエントリーをはてなブックマークに追加"><img src="http://b.st-hatena.com/images/entry-button/button-only@2x.png" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a><script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>
		</dt>
	</dl>
</div>

なお、facebookのいいねを表示するために以下のjavascriptコードも必要

	<div id="fb-root"></div>
	<script>(function(d, s, id) {
	  var js, fjs = d.getElementsByTagName(s)[0];
	  if (d.getElementById(id)) return;
	  js = d.createElement(s); js.id = id;
	  js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1";
	  fjs.parentNode.insertBefore(js, fjs);
	}(document, 'script', 'facebook-jssdk'));</script>

どこに記述すればよいのか?

twenty thirteenのcontent.phpの以下の部分にHTMLを追記した。

<footer class="entry-meta">
        
        //ココに追記

	<?php if ( comments_open() && ! is_single() ) : ?>

なお、記事の個別ページでのみソーシャルボタンを表示したいので、以下のようにwordpressのis_single()で個別エントリー内でのみ表示されるようにしている。下のようなコードにすることでトップページなどではソーシャルボタンが表示されないようになる。

<footer class="entry-meta">
	<?php if( is_single() ) : ?>
                //ココに追記
        <?php endif; ?>

	<?php if ( comments_open() && ! is_single() ) : ?>

facebookのjsコードはfooter.phpのbodyタグ終了直前に配置した。終了直前でも表示に問題はないが、facebookの公式ページには、bodyの先頭に記述したほうが良いと書いてあった気がする。

Twenty Thirteen以外でも利用できる汎用コード

HTML

汎用タイプのHTMLは、ul liで組んである。

<ul class='button-group even four-up list-details-none' title='social bookmarks'>
	<li>
		<div class='fb-like' data-href='<?php the_permalink();?>' data-send='false' data-layout='box_count' data-width='450' data-show-faces='true'></div>
	</li>
	<li>
		<a rel='nofollow' href='https://twitter.com/share' class='twitter-share-button' data-count='vertical' data-url='<?php the_permalink();?>' data-text='<?php the_title();?>'>Tweet</a><script type='text/javascript' src='//platform.twitter.com/widgets.js'></script>
	</li>
	<li>
		<script type='text/javascript' src='https://apis.google.com/js/plusone.js'></script><g:plusone size='tall' href='<?php the_permalink();?>'></g:plusone>
	</li>
	<li>
		<a rel='nofollow' href="http://b.hatena.ne.jp/entry/<?php the_permalink();?>" class="hatena-bookmark-button" data-hatena-bookmark-title="<?php the_title();?>" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="このエントリーをはてなブックマークに追加"><img src="http://b.st-hatena.com/images/entry-button/button-only@2x.png" alt="このエントリーをはてなブックマークに追加" width="20" height="20" style="border: none;" /></a><script type="text/javascript" src="http://b.st-hatena.com/js/bookmark_button.js" charset="utf-8" async="async"></script>
	</li>
</ul>

CSS

cssはzurb foundationのButton Groupsを利用する案。以下のcssでリスト化されたHTMLをインラインで表示し、リストの個数に応じて等間隔で並べることができる。zurb foundationはおすすめのcssフレームワーク。

ul.button-group { list-style: none; padding: 0; margin: 0 0 12px; *zoom: 1; text-align: center; }
ul.button-group:before, ul.button-group:after { content: " "; display: table; }
ul.button-group:after { clear: both; }
ul.button-group li { padding: 0; margin: 0 0 0 -1px; float: left; }
ul.button-group li:first-child { margin-left: 0; }
ul.button-group.radius li a.button, ul.button-group.radius li a.button.radius, ul.button-group.radius li a.button-rounded, ul.button-group.radius li input[type="submit"].button, ul.button-group.radius li input[type="submit"].button.radius, ul.button-group.radius li input[type="submit"].button-rounded { -webkit-border-radius: 0px; -moz-border-radius: 0px; -ms-border-radius: 0px; -o-border-radius: 0px; border-radius: 0px; }
ul.button-group.radius li:first-child a.button, ul.button-group.radius li:first-child a.button.radius, ul.button-group.radius li:first-child input[type="submit"].button, ul.button-group.radius li:first-child input[type="submit"].button.radius { -moz-border-radius-topleft: 3px; -webkit-border-top-left-radius: 3px; border-top-left-radius: 3px; -moz-border-radius-bottomleft: 3px; -webkit-border-bottom-left-radius: 3px; border-bottom-left-radius: 3px; }
ul.button-group.radius li:first-child a.button.rounded, ul.button-group.radius li:first-child input[type="submit"].button.rounded { -moz-border-radius-topleft: 1000px; -webkit-border-top-left-radius: 1000px; border-top-left-radius: 1000px; -moz-border-radius-bottomleft: 1000px; -webkit-border-bottom-left-radius: 1000px; border-bottom-left-radius: 1000px; }
ul.button-group.radius li:last-child a.button, ul.button-group.radius li:last-child a.button.radius, ul.button-group.radius li:last-child input[type="submit"].button, ul.button-group.radius li:last-child input[type="submit"].button.radius { -moz-border-radius-topright: 3px; -webkit-border-top-right-radius: 3px; border-top-right-radius: 3px; -moz-border-radius-bottomright: 3px; -webkit-border-bottom-right-radius: 3px; border-bottom-right-radius: 3px; }
ul.button-group.radius li:last-child a.button.rounded, ul.button-group.radius li:last-child input[type="submit"].button.rounded { -moz-border-radius-topright: 1000px; -webkit-border-top-right-radius: 1000px; border-top-right-radius: 1000px; -moz-border-radius-bottomright: 1000px; -webkit-border-bottom-right-radius: 1000px; border-bottom-right-radius: 1000px; }
ul.button-group.even .button { width: 100%; }
ul.button-group.even.two-up li { width: 50%; }
ul.button-group.even.three-up li { width: 33.3%; }
ul.button-group.even.three-up li:first-child { width: 33.4%; }
ul.button-group.even.four-up li { width: 25%; }
ul.button-group.even.five-up li { width: 20%; }

Twenty Thirteenの領域になってしまうが、上のHTMLを

<aside id="social" class="widget widget_nav_menu">
    //リスト化されたHTML
</aside>

上のようにasideで囲めば、横一列で並んだソーシャルボタンの背景にTwenty Thirteenのカラーで色づけできたりする。本ブログではそのようにしている。

ソーシャルボタンの高速化
ソーシャルボタンを非同期化して高速化する方法