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 中:

<?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