Quantcast
Channel: TM's Workspace » PHP
Viewing all articles
Browse latest Browse all 2

SNSボタンを表示するWordPressプラグインを作ってみました。

$
0
0

 ブログを少しずつ、さくらVPSの方へ移そうと思っていたのですが、以外と手間がかかりそうなので、当面、こちらのブログに戻すことにしました。
 このため、さくらVPSのWordPressに投稿していたデータをこちらへ再投稿します。

 はてブやTwitter等のSNSボタンをWordpressに設置するプラグインには、WP Social Bookmarking Lightという高機能なプラグインがあるのですが、wp.Vicuna.Ext.と相性が今イチというか、ボタンの配置位置等をもう少し調整したい感じがしました。
 そのため、Wordpressプラグインの習作として、SNSボタン配置するプラグインを作ってみました。
 


■SNSボタンを配置するWordpressプラグイン:sns-button.zip
1.ソーシャルブックマーク下調べ
 とりあえず、下記のサイトを参照して、ソーシャルブックマークの種類とボタンの設置方法を調べてみました。

2.ソースコード
 ソースコードは以下のようにしました。(一部途中で改行)
 2~12行目は標準プラグイン情報を記したヘッダー部です。
 17~26行目は、JavaScriptファイルの読み込みを行う関数を定義しています。
 30~91行目は、SNSボタンを配置する関数を定義しています。
 とりあえず、設置するボタンは、自分が使っている、はてなブックマーク、Twitter、そのうち使うかもしれない、Google+1、facebook-likeボタンとしました。  また、wp.Vicuna.Ext.のinfoバー直下に、横一列でボタンを配置したいので、ul要素のinlineではなく、tableを使用しました。
 85~86行目は関数を実行するチェックポイントに登録しています。今回は、ヘッダー生成時にJavaScriptファイルを読み込み、コンテンツの生成が終了し、フッター生成されるタイミングでsetSNSButton関数をフックしています。

 
<?php
/*
 Plugin Name: Sns-button
 Plugin URI:

http://blog.termat.net/web/snsボタンを表示するwordpressプラグインを作ってみまし/

 Description: ソーシャル・ブックマークボタンの配置
 Author: t.matsuoka
 Author URI: http://www.termat.net/
 Version: 1.0.0
 License: GPLv2 (http://www.fsf.org/licensing/licenses/info/GPLv2.html)
 */

function initButton(){
?>
<script type="text/javascript"
	src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript"
 	src="http://b.st-hatena.com/js/bookmark_button.js"
	charset="utf-8" async="async"></script>
<script type="text/javascript"
	src="http://platform.twitter.com/widgets.js"></script>
<script type="text/javascript"
	src="https://apis.google.com/js/plusone.js">{lang: 'ja'}</script>
<script src="http://connect.facebook.net/ja_JP/all.js#xfbml=1"></script>
<?php
}

function setSNSButton(){
?>
<script type="text/javascript">
<?php	if (is_page() || is_single()) : ?>
var url=document.URL;
$(".info").each(function(){
	var table=$("<table />");
	var tr=$("<tr />");
	table.append(tr);
	table.css("margin-top","-20px");
	table.attr("cellspacing","0");
	table.attr("cellpadding","0");
	table.css("background-color","#ffffff");
	table.css("border-spacing","0px");
	table.css("border-width","0px");
	tr.css("border-width","0px");
	var ha=$("<a />");
	ha.attr("href","http://b.hatena.ne.jp/entry/");
	ha.attr("class","hatena-bookmark-button");
	ha.attr("data-hatena-bookmark-layout","standard");
	ha.attr("title","このエントリーをはてなブックマークに追加");
	var himg=$("<img />");
	himg.attr("src","http://b.st-hatena.com/images/entry-button/button-only.gif");
	himg.attr("alt","このエントリーをはてなブックマークに追加");
	himg.attr("width","20");
	himg.attr("height","20");
	himg.attr("style","border: none;");
	ha.append(himg);
	var td=$("<td />");
	td.css("border-width","0px");
	td.append(ha);
	tr.append(td);
	var ta=$("<a />");
	ta.attr("href","http://twitter.com/share");
	ta.attr("class","twitter-share-button");
	ta.attr("data-count","horizontal");
	ta.attr("data-lang","ja");
	ta.text("Tweet");
	td=$("<td />");
	td.css("border-width","0px");
	td.append(ta);
	tr.append(td);
	td=$("<td />");
	td.append("<fb:like href='"+url+"' send='false' layout='button_count'
		 width='100' show_faces='true' font=''></fb:like>");
	td.css("border-width","0px");
	tr.append(td);
	td=$("<td />");
	td.css("border-width","0px");
	td.append("<g:plusone size='small'></g:plusone>");
	tr.append(td);
	table.insertAfter($(this));
	var hr=$("<hr />");
	hr.insertAfter(table);
});
<?php	endif; ?>
</script>
<?php
}
add_action('wp_head', 'initButton');
add_action('wp_footer', 'setSNSButton');
?>

 SNSボタンを配置するだけという低機能ですが、とりあえず、SNSボタンを自分が配置したい場所に配置できました。


Viewing all articles
Browse latest Browse all 2

Trending Articles