[STINGER5]SNSボタンにSNS Count Cacheをつかってみた

PHP
この記事は約17分で読めます。

あとで読めるサービス「Pocket」を使い始めたものの、自分のブログのSNS登録欄には「Pocket」がありません。

というわけで、SNSボタンを標準のものから変更してみました。

※2015年11月20日をもってTwitterのツイート数取得APIの提供が終了したため、今後はツイート数は更新されません。

統一デザインのSNSボタン

STINGER5の標準で用意されているSNSボタンのデザインを統一デザインへとカスタマイズしている記事を見つけました。

ここまでだと、見栄えは良くなったものの、記事を表示するたびに各SNSから直接カウントを取得してしまうため記事の表示が非常に「遅い」ので、さらにSNSカウントをキャッシュするプラグイン「SNS Count Cache」を導入するところも参考にさせていただきました。

そして、「SNS Count Cache」では、「Pocket」のカウントも取得できているようなので、このSNSボタンに「Pocket」も追加して実装してみました。

こちらがプラグイン作者さんのプラグインの紹介ページです。

そして、WordPress.orgプラグインディレクトリのページです。公式ディレクトリに登録されているので、ダッシュボードからインストールすることができます。

SNSボタンの画像を用意

ボタンの画像や、貼り付けるテキストなどは上記の「えじの自由帳」さんの記事に公開用のZIPファイルがありますのでダウンロードします。

(このZIPファイルに同梱されいてる「sns.php」は、高速化する前のAPIを使って直接カウントを取得する内容になっています。)

download-zip-sns-button

ZIPファイルを展開すると、「sns-icons.png」があります。

sns-icons

今回はこれを、Windows標準のペイントで開いて、「ファイル」→「プロパティ」を開いて、高さを「100」から「120」に変更して、

height-100-to-120

公式サイトのアイコンを見本にしながら書いてみました。

mspaint-sns-button

文字は、20ポイントくらいで書いたのを、Microsoft Office Picture Managerで縮小したのを貼ったりして完成。

うん、それっぽい!

sns-icons

WordPressの「メディア」→「新規追加」でファイルを追加します。

media-upload

画像のURLをコピーしておいて、次項のスタイルシートの「background: url(‘【アイコンファイルのURL】‘) no-repeat;」のところにURLを指定します。

sns-button-url

スタイルシートの変更

スタイルシート(style.css)の、SNSボタンの記述があるところを探して、「.snsbox」以降をコピー/貼り付け。(Pocket用の定義も追加してあります。)

/*--------------------------------
SNS
---------------------------------*/
.sns li {
margin: 5px 0;
}
.sns .snsb li {
float: left;
margin-right: 10px;
list-style-type: none;
}
.post .sns .snsb.clearfix {
padding-top: 20px;
padding-right: 0px;
padding-bottom: 20px;
padding-left: 0px;
}
.snsbox{
overflow:hidden;
}
.snsbox li{
margin: 0 5px 5px 0;
float: left;
list-style:none;
}
.sns-icon {
display: block;
width: 70px;
height: 20px;
text-indent: -9999px;
background: url('【アイコンファイルのURL】') no-repeat;
}
.facebook { background-position: 0 -80px; }
.twitter { background-position: 0 -60px; }
.gplus { background-position: 0 -20px; }
.hatebu { background-position: 0 -40px; }
.pocket { background-position: 0 -100px; }
.feedly { background-position: 0 0; }
.sns-count {
position: relative;
display: block;
width: 68px;
margin-bottom: 7px;
padding: 3px 0;
text-align: center;
border: 1px solid #aaa;
border-radius: 3px;
background: #fff;
}
.sns-count:after, .sns-count:before {
position: absolute;
top: 100%;
left: 50%;
width: 0;
height: 0;
content: ' ';
pointer-events: none;
border: solid transparent;
}
.sns-count:after {
margin-left: -5px;
border-width: 5px;
border-color: rgba(255, 255, 255, 0);
border-top-color: #fff;
}
.sns-count:before {
margin-left: -6px;
border-width: 6px;
border-color: rgba(170, 170, 170, 0);
border-top-color: #aaa;
}
/*--------------------------------
カレンダー
---------------------------------*/

「【アイコンファイルのURL】」というところに、画像ファイルのURLを記入しておきます。

例えば、当サイトでは「http://mailbox.conohawing.com/popozure/blog/wp-content/uploads/2015/02/sns-icons2.png」を指定しました。

SNSボタンの設置

SNSボタンが記述されている「sns.php」の中身を丸ごと入れ替えでします。

(2015/11/22追記)2015年11月20日をもって、Twitterのツイート数取得APIの提供が終了しました。以後、ツイート数は更新されないため、「0」のままになります。その内、ツイート数を表示させないような修正方法を載せるかもしれません。

<div class="sns">
<ul class="snsb clearfix">
<li><span class="sns-count"><?php if(function_exists('scc_get_share_twitter')) echo scc_get_share_twitter(); ?></span><a href="https://twitter.com/intent/tweet?url=<?php the_permalink(); ?>&text=<?php echo get_the_title(); ?>" target="_blank"><span class="sns-icon twitter">twitter</span></a></li>
<li><span class="sns-count"><?php if(function_exists('scc_get_share_facebook')) echo scc_get_share_facebook(); ?></span><a href="https://www.facebook.com/sharer/sharer.php?u=<?php the_permalink(); ?>" target="_blank"><span class="sns-icon facebook">facebook</span></a></li>
<li><span class="sns-count"><?php if(function_exists('scc_get_share_gplus')) echo scc_get_share_gplus(); ?></span><a href="https://plus.google.com/share?url=<?php the_permalink(); ?>" target="_blank"><span class="sns-icon gplus">google+</span></a></li>
<li><span class="sns-count"><?php if(function_exists('scc_get_share_hatebu')) echo scc_get_share_hatebu(); ?></span><a href="http://b.hatena.ne.jp/add?mode=confirm&url=<?php the_permalink(); ?>&title=<?php echo get_the_title(); ?>" target="_blank"><span class="sns-icon hatebu">はてなブックマーク</span></a>
<li><span class="sns-count"><?php if(function_exists('scc_get_share_pocket')) echo scc_get_share_pocket(); ?></span><a href="http://getpocket.com/edit?url=<?php the_permalink() ?>&title=<?php echo $title_encode; ?>" target="_blank"><span class="sns-icon pocket">Pocket</span></a></li>
<li><span class="sns-count"><?php if(function_exists('scc_get_follow_feedly')) echo scc_get_follow_feedly(); ?></span><a href="http://cloud.feedly.com/#subscription/feed/https://popozure.info/feed" target="_blank"><span class="sns-icon feedly">feedly</span></a></li>
</ul>
</div>

「Pocket」と「Feedly」のカウントも「SNS Count Cache」から取得するように追加・変更しています。

(2015/02/16追記)FeedlyもSNS Cache Countから取るように変更しました。プラグインで使用する関数を新しいものに修正しました。

「【フィードのURL】」がありますが、RSSフィードのURLを入力します。トップページのアドレスでは無いので注意。

例えば、当サイトでは「https://popozure.info/feed」を指定しました。

(追記)タブレットでボタンが表示されない?

NEXUS7でページを見たところ、ボタンが上手く表示されず、文字だけになってしまいました。

sns-text

自分のスタイルシートの理解が足りなかかったため、style.cssのどこにおけばタブレットでも正しく見えるか分かりませんでした。

そこで、style.cssに追加した部分は削除して、SNS用のスタイルシートとして「sns.css」を新たに作成してSNS.phpと同じフォルダーに置きました。

.snsbox{
overflow:hidden;
}
.snsbox li{
margin: 0 5px 5px 0;
float: left;
list-style:none;
}
.sns-icon {
display: block;
width: 70px;
height: 20px;
text-indent: -9999px;
background: url('【アイコンファイルのURL】') no-repeat;
}
.facebook { background-position: 0 -80px; }
.twitter { background-position: 0 -60px; }
.gplus { background-position: 0 -20px; }
.hatebu { background-position: 0 -40px; }
.pocket { background-position: 0 -100px; }
.feedly { background-position: 0 0; }
.sns-count {
position: relative;
display: block;
width: 68px;
margin-bottom: 7px;
padding: 3px 0;
text-align: center;
border: 1px solid #aaa;
border-radius: 3px;
background: #fff;
}
.sns-count:after, .sns-count:before {
position: absolute;
top: 100%;
left: 50%;
width: 0;
height: 0;
content: ' ';
pointer-events: none;
border: solid transparent;
}
.sns-count:after {
margin-left: -5px;
border-width: 5px;
border-color: rgba(255, 255, 255, 0);
border-top-color: #fff;
}
.sns-count:before {
margin-left: -6px;
border-width: 6px;
border-color: rgba(170, 170, 170, 0);
border-top-color: #aaa;
}

「sns.php」の中から、スタイルシートをリンクします。

<div class="sns">
<ul class="snsb clearfix">
<li><span class="sns-count"><?php if(function_exists('scc_get_share_twitter')) echo scc_get_share_twitter(); ?></span><a href="https://twitter.com/intent/tweet?url=<?php the_permalink(); ?>&text=<?php echo get_the_title(); ?>" target="_blank"><span class="sns-icon twitter">twitter</span></a></li>
<li><span class="sns-count"><?php if(function_exists('scc_get_share_facebook')) echo scc_get_share_facebook(); ?></span><a href="https://www.facebook.com/sharer/sharer.php?u=<?php the_permalink(); ?>" target="_blank"><span class="sns-icon facebook">facebook</span></a></li>
<li><span class="sns-count"><?php if(function_exists('scc_get_share_gplus')) echo scc_get_share_gplus(); ?></span><a href="https://plus.google.com/share?url=<?php the_permalink(); ?>" target="_blank"><span class="sns-icon gplus">google+</span></a></li>
<li><span class="sns-count"><?php if(function_exists('scc_get_share_hatebu')) echo scc_get_share_hatebu(); ?></span><a href="http://b.hatena.ne.jp/add?mode=confirm&url=<?php the_permalink(); ?>&title=<?php echo get_the_title(); ?>" target="_blank"><span class="sns-icon hatebu">はてなブックマーク</span></a>
<li><span class="sns-count"><?php if(function_exists('scc_get_share_pocket')) echo scc_get_share_pocket(); ?></span><a href="http://getpocket.com/edit?url=<?php the_permalink() ?>&title=<?php echo $title_encode; ?>" target="_blank"><span class="sns-icon pocket">Pocket</span></a></li>
<li><span class="sns-count"><?php if(function_exists('scc_get_follow_feedly')) echo scc_get_follow_feedly(); ?></span><a href="http://cloud.feedly.com/#subscription/feed/https://popozure.info/feed" target="_blank"><span class="sns-icon feedly">feedly</span></a></li>
</ul>
</div>
<link rel="stylesheet" href="<?php echo get_stylesheet_directory_uri(); ?>/sns.css" />

結果、スマートフォン/タブレットからも表示されるようになりました。

設置できました

無事に設置できたようです。

post-sns-button

シェアしていただいている記事があったりしたのが分かりました。

ありがたやありがたや。

コメント

タイトルとURLをコピーしました