Old

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

同步 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

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25120

87 comments

  1. MOPVHS MOPVHS Google Chrome 4.1.249.1042 Google Chrome 4.1.249.1042 Windows XP Windows XP

    默念...一定是沙发...
    我是在 twitter 上看到:

    【博客更新】致尊敬的发布商客户:
    关于谷歌中国的最新声明

    跑过来的...嘿嘿... :roll:
    对了,把用户名密码明文放在functions.php里似乎不安全...

    沙发
  2. laofan laofan Internet Explorer 6.0 Internet Explorer 6.0 Windows XP Windows XP

    通过做啥关联博客就可以实现了,那 有这么费劲呀

    板凳
  3. 老千 老千 Firefox 3.6.2 Firefox 3.6.2 Windows XP Windows XP

    使用twitter的同志有福了

    地板
  4. ......
  5. fly3q fly3q Firefox 3.6.8 Firefox 3.6.8 Windows 7 Windows 7

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

    41楼
  6. ppseeker ppseeker TheWorld Browser TheWorld Browser Windows XP Windows XP

    哈哈,感谢,但是标题是不是只显示英文的?

    42楼
  7. FORECE FORECE Firefox 3.6.14 Firefox 3.6.14 Windows 7 Windows 7

    有插件没。。。。我现在实在是懒的很了。。。

    43楼
  8. 44楼
  9. 精品生活 精品生活 Google Chrome 11.0.686.3 Google Chrome 11.0.686.3 Windows XP Windows XP

    英文的标题也可以使用吧,不会有什么附加的汉字在里面吧?用过的给个提示。

    45楼

Leave a Reply