实时同步 WordPress 文章发布、修改信息到 twitter

» 2010-03-27 87条评论

同步 WordPress 文章发布信息到 twitter 这类功能有很多方法实现,有 WordPress 插件也可以用 Feedburnder 订阅实现,但这些都只能同步新文章的更新信息,而且速度相对有些延迟。

今天介绍的方法是前天 QiQiBoY's Blog 折腾出的最新方法,用 php 语言实现,可以同步 WordPress 文章发布修改信息到 twitter,而且是实时的!

我试用了一天(发表了一篇文章),觉得非常好用,特意推荐,下面是方法(非常适合 CP 党)

作者 QiQiBoY 的说明:

  • 发布日志之后立即在twitter上出现相应的更新信息
  • 刚发布的日志可能会在刚发布一段时间内稍作修改,此时不应该重复再发布更新信息(其实这个你即使不专门用程序来做这个,只要你的日志标题、 url不变,就不会发生重复发布的尴尬,因为twitter也有相同的信息不能连续发布的规则)
  • 如果早期文章有所修改,twitter上也可相应显示相关信息,但是指明这个在“修改一篇文章”

如果是国外主机,把下面的代码 CP(Copy Paste) 到主题的 functions.php 的<?php ... ?>里面,然后按照注释说明填入自己 twitter 用户和密码即可。如果是国内主机,具体方法看代码注释

/* --- 同步WordPress日志更新信息到twitter --- */
 add_action('publish_post', 'twitter_update_post');
 function twitter_update_post($id)
 {
     if($_POST['action'] != "autosave" and $_POST['post_status'] != "draft")//自动保存和保存草稿咱就算了
     {
         $mypost = get_post($id);
         $title = strip_tags(get_the_title($id));
         $postlink = get_permalink($id);
         if($_POST['original_post_status'] == 'publish') //日志状态是“发布”,即此篇日志已经发布过,此时是修改状态
         {
             if (time() - strtotime($mypost->post_date) < 60*60*24*1 )
             {
                 return;//判断日志发布时间与当前时间,一天之内则终止函数
             }
             $title = "【博文修改】" . $title;//加上消息前缀,表明此时是在修改一篇日志
         }
         else
         {
             $title = "【博客更新】" . $title;//否则则是表明再发布新日志,消息前缀为“博客更新”
         }
         $shortlink = $mypost->short_url;//这里是从我的数据库中获取文章短网址,你可以删除掉这行
         if ($shortlink=="") //没有取得短网址,就再去获取
         {
         $shortlink = "http://u.boy.im/api.php?url=" . $postlink;
         }
         $url_contents = file_get_contents($shortlink);
         $temp_length = (strlen($title)) + (strlen($url_contents));
         if($temp_length > 137)//限制字符长度,长度大于137的截断,留三个字符用来加“...”
         {
             $remaining_chars = 134 - strlen($url_contents);
             $title = substr($title, 0, $remaining_chars);
             $title = $title . "...";
         }
         $message = $title . " - " . $url_contents;
         return (wp_to_twitter($message));
     }
 }
 function wp_to_twitter($message)
 {
     $username = "twitter用户名";
     $password = "密码";
     $url = 'http://twitter.com/statuses/update.xml';//国外用户使用这个,国内的用户则通过下面的api代理来发布。(代理可能会不稳,出现更新失败)
     //$url = 'http://nest.onedd.net/api/statuses/update.xml';
     /*这里有两种方法,一种是使用curl函数,如果你的主机不支持curl函数,则还可以使用下面一种。
     $curl_handle = curl_init();
     curl_setopt($curl_handle, CURLOPT_URL, "$url");
     curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
     curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($curl_handle, CURLOPT_POST, 1);
     curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
     curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
     $buffer = curl_exec($curl_handle);
     curl_close($curl_handle);
     */
     $body = array( 'status'=>$message );
     $headers = array( 'Authorization' => 'Basic '.base64_encode("$username:$password") );
     $request = new WP_Http;
     $result = $request->request( $url , array( 'method'=>'POST', 'body'=>$body, 'headers'=>$headers) );   
 }

效果图:

原文链接:同步WordPress日志更新信息到twitter

2010.4.2 Update

作者 quqiboy 已做成 Wp 插件:具体到《插件发布:little wp to twitter》围观

zww
or
oooo

“实时同步 WordPress 文章发布、修改信息到 twitter”有87条评论

  1. SATURN says:

    继续用Feedburnder 同步的路过~~

    1. zwwooooo says:

      @SATURN feedburnder 也算很快了

  2. 集趣 says:

    耗不耗资源啊!

    1. zwwooooo says:

      @集趣 这丁点儿点资源你就忽略吧

  3. Feedburnder同步...
    加这么一陀代码,感觉就不爽

    1. zwwooooo says:

      @Auston Jary 呵呵,随意

  4. 北街 says:

    真不错~不过我已经好久没用twitter了~ :cry:

  5. 狐少 says:

    这个sina微薄做的挺好的!

    1. zwwooooo says:

      @狐少 唉,国内真正用一下的也就嘀咕

  6. Jutoy says:

    其实我用的是FeedBurner,一般延时也不会超过5分钟~

    1. zwwooooo says:

      @Jutoy 这个是秒杀

  7. 秦大少 says:

    没有推,用不上,哦耶~ :oops:

  8. 用不上啊 。。不玩twitter :cool:

  9. Timothy says:

    很强大

  10. 强啊强!不过这样一来我的“functions.php 的”里边阵容就非常庞大了

    1. zwwooooo says:

      @快乐岛博客 没关系,那么点,很多插件都比这个大多了

  11. 纯粹 says:

    修改同步似乎没必要呃。
    我用的twitter tools显示侧边栏,也有即时同步功能,不过我用的twitterfeed,即时与否无所谓了,主要是方便管理feed同步

    1. zwwooooo says:

      @纯粹 各有所需吧,就像有些人喜欢把一些插件功能写到functions.php、有些人又喜欢用插件——简单,呵呵

  12. Afio says:

    我直接用 做啥 哈哈 :mrgreen:

    1. zwwooooo says:

      @Afio 喜欢秒杀和【文章修改】的就用我文章的这个

  13. alswl says:

    用FeedBurner的一个Social功能即可,几乎是即时的

    1. zwwooooo says:

      @alswl 喜欢哪种用哪种,哈

  14. 朵未 says:

    俺还没有注册twitter,注册还要翻墙啊。

    1. zwwooooo says:

      @朵未 用twitter意味着你要随身携带梯子,当然也有方法不用梯子,网上一大堆

  15. leesum says:

    很实用的功能哦。。。

  16. junjun says:

    算了,看上去好难啊 :oops:

    1. zwwooooo says:

      @junjun 不难吧,就是 CP 一下

  17. andy says:

    哈哈,国外主机就是爽,已经用上了。。如果能实现所有微博同时更新就好了。。期待ZWW再更新出这样的代码

    1. zwwooooo says:

      @andy 有吧,只是比较麻烦,follow5可以同步很多,但其实这样也没意思,呵呵

  18. tron says:

    已经用了FeedBurner了,就不瞎折腾了,会有刷屏的嫌疑~ :razz:

    1. zwwooooo says:

      @tron 不要用多个啊,一个就不会刷屏了,呵呵

  19. wp-twitter插件也可以的

    1. zwwooooo says:

      @语录时报 这里说的就是给不喜欢用插件的朋友使用的,呵呵

  20. fly3q says:

    就加上,谢谢了,之前用了gae来完成几大微博的同步,现在wp也加上

    1. zwwooooo says:

      @fly3q 那么多微博,同步真辛苦

发表评论

昵称 *

网址

B em del U Link Code Quote