WordPress 非插件调用最新 Twitter

昨天,转载了一篇《Wordpress 免插件输出最新 Twitter》的文章,不过很可惜的是,这个方法只适用于国外主机,因为国内主机的环境读不到墙外 Twitter 的 feed。之后,从 live spaces 到 WordPress 都无所不能的任平生大哥分享了一下他的方法,墙内外皆可适用,经向任兄求助得知,其原理就是使用 yahoo pipes 过滤 Twitter 中不需要的信息,然后用 WordPress 自带的解析函数输出,不过因为我身在网吧,限制重重,没能按照任兄的方法实现,但是只要理解其中原理,再 DIY 一个属于自己的墙内外适用的非插件调用 Twitter 也非难事。

几经搜索,找到 tidyTweet 这个网站,该网站可以收集并过滤输出 Twitter 的信息,在其网站上看到有适用于 WordPress 的插件,但是我肯定不会选择插件啦,要的就是折腾。下面完整介绍下墙内外都适用的  WordPress 非插件调用最新 Twitter 信息的方法。

1、注册 tidyTweet(http://www.tidytweet.com/)

这好像有点废话,不过为了这废话我也费了点时间,在网上要找到可以过滤 Twitter 并输出 feed 的也就十来个网站,没有被墙的,就那么一两个,速度快、自定义程度高的我看也就这么一个了。

注册成功后,需要从 tidyTweet 发来的确认邮件中激活(所以邮箱地址别乱填),此时会得到一个 account.tidytweet.com 这样的二级域名。

2、添加并设置 Twitter Feed

接下来就是设置 Twitter 的 feed 了,按照提示即可。其中的 Search phrase 挺关键的,直接影响了你的 Twitter 输出什么信息,我个人觉得一般用 from:Twitter 帐号比较好,比如我就填 from:wange1228。其他更多选项可以默认,也可以根据自己的不同需要修改,还是挺人性化的。

3、获取 feed

上一步保存之后,会返回五个可选的应用选项,分别是 Public Feed、RSS、Embed Widget、Visible Tweets、Wordpress,根据不同的应用可以选择不同的方式,这里不一一介绍了,有兴趣的朋友可以都尝试下。在本例中我选择的是 RSS,点击后获取 URL 地址,比如我的是:http://wange.tidytweet.com/wange1228.atom,这就是我们下一步需要调用的 feed 地址。

4、调用 Twitter

蓝冰童鞋非要戳到我哭,还要把我戳死,他告诉我这算不上同步,只能说是调用,好吧,我们开始调用 Twitter 到 WordPress。这里需要用上 WordPress 自带的 feed 输出函数 wp_widget_rss_output() 和上一步得到的 URL 地址,使用方法如下:

<?php
wp_widget_rss_output('http://wange.tidytweet.com/wange1228.atom',array('items'=>1));
?>

其中,http://wange.tidytweet.com/wange1228.atom 就是从 RSS 得到的 URL 地址,'items'=> 后面的数值就是输出的 Twitter 信息数量,我只输出了一条,效果可以看小站首页,关于样式嘛,大家就发挥创造力和想象力吧。

  1. 我看过上次那个代码了,有个小bug:无法通过W3C的html验证。PHP在输出的时候没有把"转换成引号(")。我改了一下,貌似可以通过验证了!代码如下:
    <?php
    // Your twitter username.
    $username = "keelii";
    // Prefix - some text you want displayed before your latest tweet.
    // (HTML is OK, but be sure to escape quotes with backslashes: for example href=\"link.html\")
    // Suffix - some text you want display after your latest tweet. (Same rules as the prefix.)
    $suffix = "";
    $feed = "http://search.twitter.com/search.atom?q=from:&quot; . $username . "&rpp=1";
    function parse_feed($feed) {
    $stepOne = explode("", $feed);
    $stepTwo = explode("", $stepOne[1]);
    $tweet = $stepTwo[0];
    $tweet = str_replace("<", "", $tweet);
    $tweet = str_replace(""", "\"", $tweet);//repair for html validation
    return $tweet;
    }
    $twitterFeed = file_get_contents($feed);

    echo stripslashes($prefix) . parse_feed($twitterFeed) . stripslashes($suffix);
    ?>

  2. 有插件干嘛不用呢?所谓的有插件和无插件实现某个功能的原理都是一样的,对效率的影响很微,除非某个插件的逻辑写得很烂

  3. 这太累人了,我是觉得博客上要同步或者调用微博信息的话,还是选择国内的平台好了。
    但话说回来,从博客到推,不容易。从推到博客,却是很方便。 :wink:
    对了老万,你还在网吧里上嘛?我启用阿三米了,你有空帮我改下链接地址吧。 :idea: