WordPress 非插件调用 Twitter 修订版
看到这个标题,估计童鞋们都要有视觉疲劳了吧,因为加上之前写过的五种方法(#1、#2、#3、#4、#5),这已经是我第六次写 WordPress 非插件的方式调用输出 Twitter 消息了,当然每种方法适应的人群各不相同,方法也各有千秋,输出的格式也不完全相同,各取所需了。
今天介绍的 Twitter 同步到 WordPress 的方法是之前几种的综合版,也算是修订版,因为在给用户定制主题的时候我发现了一个 bug。在《WordPress 免插件输出最新 Twitter》一文中提到的用 Twitter Search(search.twitter.com)解析 feed 的方法,但是我发现好多 Twitter 帐户根本无法在 Twitter Search 中找到,也就无法解析订阅源,原因不明,很是神奇。所以我就想用 Twitter 原生态的 feed 来解析,这个是 Twitter 的就一定有,那就不怕找不到订阅源了吧~
把以下代码放在需要显示的地方,比如 sidebar.php 或者 header.php 中:
$twitterid = "wange1228"; //这里换成自己的 Twitter 帐户
function autolink($linktext) //用正则过滤出链接文本,并自动加上 url 链接
{
$linktext = eregi_replace('(((f|ht){1}tp://)[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '<a href="\1" target="_blank" rel="nofollow">\1</a>', $linktext);
if( strpos($linktext, "http") === FALSE ){
$linktext = eregi_replace('(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '<a href="http://\1" target="_blank" rel="nofollow">\1</a>', $linktext);
} else {
$linktext = eregi_replace('([[:space:]()[{}])(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)', '\1<a href="http://\2" target="_blank" rel="nofollow">\2</a>', $linktext);
}
return $linktext;
}
require_once (ABSPATH . WPINC . '/class-feed.php');
$feed = new SimplePie();
$feed->set_feed_url('http://twitter.com/statuses/user_timeline/'.$twitterid.'.rss');
$feed->init();
$items = $feed->get_items(0,1); //输出的 Tweet 的数量,这里显示1条,可按需修改
foreach ($items as $item)
{
$tweet = autolink($item->get_description());
echo str_replace($twitterid.":", "<a target='_blank' rel='nofollow' href='http://twitter.com/".$twitterid."'>@".$twitterid."</a>:", $tweet);
}
?>
这样就OK了,样式部分我就不介绍了,不过关于这些代码有几点申明:
1、因为用了正则表达式来过滤 Twitter 消息中的链接文本并自动加上 url 链接,所以我顺便加上了 nofollow 标签,别让一些无谓的站外链接抢了站内的权重。
2、以上只是关键代码,属于精简版的,和我现在用的效果并不完全相同。以上代码主要省略了缓存和显示相对时间的功能,Hzlzh 老兄写过非常详细的教程,我就不多介绍了,请看《网站调取Twitter信息|格式化输出时间》。如果把我这篇补 bug 的文章和他那篇结合起来,我觉得 WordPress 非插件输出 Twitter 消息的方法就堪称完美了。
3、本方法只适合于国外主机用户,国内主机需要用此方法就要把其中的订阅源换成相应的 API 地址,这个就不在本文介绍范围了,有兴趣有需要的朋友可以折腾一下。
4、因为 PHP 水平太菜,代码可能写的比较粗糙,请高手们多多指正,我忽悠小菜鸟还行,哈哈~
5、AD一下,欢迎 Follow 我的 Twitter:http://twitter.com/wange1228
-
WordPress 非插件调用最新 Twitter2010年02月11日 -
非插件同步 WordPress 日志到 Twitter2010年04月1日 -
用 FeedBurner 烧制 Twitter feed2010年03月19日 -
用 Yahoo Pipes 过滤 Twitter feed2010年03月18日