bit.lyを中継して、twitterに投稿してもらう

(注 これは試行錯誤日記なので、きちんと使う人は、この記事に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変数は消せた。定義した関数もその名前のグローバル変数になっているのだろうけど、、。

This entry was posted in SEO and tagged , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">