(注 これは試行錯誤日記なので、きちんと使う人は、この記事にTwitterでコメント」ボタンの記事URLをbit.lyで短縮するようにしたよ、とかがいいのかもしれない, PHPであらかじめやった方がスマートだろうし)
2009/09/26 1:45 書き直した。
最近、個別記事にtwitter this! のボタンが付ける方法を紹介する記事(Twitterに記事を投稿できるようにするWordPressのコード)を見るようになってきたので、自分でも作ってみた。
上のサイトで、twittrerの画面に、タイトル・リンク付きで飛ばしてあげる方法が書いてあった。
<a href="http://twitter.com/home?status=この記事読んでね <?php the_permalink(); ?>" title="Send this page to Twitter!" target="_blank"><img src="画像のURL" /></a>
というものだった。
今回は、short-urlサービスを絡ませて、出すようにする。
あと、topページからでも、個別記事のtitle, urlが情報として飛ぶようにする。
サービスは、bit.lyを使う。
sign-upして、api-keyをもらっておいて。
function my_add_twitter(_url, _title) {
var xfgd = 'id';
var fdsr = 'api-key';
var api = 'http://api.bit.ly/shorten' + '?version=2.0.1' + '&format=json' + '&callback=Callback' + '&login=' + xfgd + '&apiKey=' + fdsr + '&longUrl=';
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = api + encodeURIComponent(_url) ;
document.body.appendChild(script);
Callback.url = _url;
Callback.title = _title;
}
function Callback(json) {
var u = arguments.callee.url;
var t = arguments.callee.title;
var url = 'http://twitter.com/home/?status=' + encodeURIComponent( t+' '+json.results[u]['shortUrl']);
location.href = url;
}
これを、実行されるjsファイルに書いておく。
で、リンク先から <a href=”#” onclick=’l="<?php the_permalink() ?>";t="<?php the_title() ?>";my_add_twitter(l,t);’
と呼び出してやれば、アイコンを付けた記事のurlがshortenされて、twitterの投稿画面に行ってくれる。
しかし、titleとurlをglobal変数に入れてしまった。Callback.apply([url, title], arguments)とかやろうとしたけど、callback関数があらかじめ定義されてないとだめなのかな? よくわかってないので、global変数で動けば良いとした。
関数もオブジェクトなので、プロパティをsetしてやって、関数定義内でarguments.calleeで読んでやれば、setしたプロパティも取れた。とりあえず、global変数は消せた。定義した関数もその名前のグローバル変数になっているのだろうけど、、。