同步 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
赏
oooo
or
- 本文标题:实时同步 WordPress 文章发布、修改信息到 twitter
- 本文链接:https://zww.me/archives/25120
- 发布时间:2010年03月27日 20:00
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
默念...一定是沙发...
我是在 twitter 上看到:
跑过来的...嘿嘿...
对了,把用户名密码明文放在functions.php里似乎不安全...
@MOPVHS 实时显示,所以基本第一时间能抢到沙发,function有密码就要设置好主机的文件安全
通过做啥关联博客就可以实现了,那 有这么费劲呀
@laofan 做啥挂了呢?所以,还是自己弄的安全些啊
@laofan 不能太依赖国内的服务 - -
使用twitter的同志有福了
地址一样的话,再发布一次,博客更新,twitter也会更新?
@郑永 不会的,更新日志的时候,就不是hook publish_post 函数了,完全可以放心
这个可真好
同步控万岁!
@砼砼 砼砼万岁!
好方法,明天转载之!
@万戈 欢迎互相转载,这方法很好
@zwwooooo 的确是很好,willn zwwooooo 万戈 ,你们几个互相转吧,就不转别人的,呵呵
@郑永 你有意见?willin 基本上他自己原创的,你没理解“互相转载”的意思
@zwwooooo 绝对有意见的,因为我也想转载,呵呵,其实转载文章很好,大家彼此宣传!
@郑永 不好意思我抢先了,这些技术的东东需要转载
应该 用 mb_strlen 吧 、、
@Kars 其实我是不懂的,跟原作者说说吧
@zwwooooo _( ̄0 ̄)_[哦~]
我也从qiqi那里看到了,不过还是不折腾。
太懒了,tw同步即可~
@A.shun 这个快啊,秒杀
@zwwooooo 这会增加你抢沙发的难度,还是不了
@zwwooooo feed图片不错·
@A.shun 哈哈
我之前用bit.ly的自动发布,还是twitterfeed忘记了。
你这方式不错,可以自己决定用什么短网址,免得被墙。
@LAONB 是啊,都在自己拿捏中
好久没有弄wp了
过来串串门........
@K4.W 荒淫常来串
我是通过feedburner同步到twitter的.
@久酷 我用这个前也是
我没有twitter~~~
今天博客来了几个陌生人,原来是从你这里来的。。。
@QiQBoY 嘿嘿
推特能推得下么 有时候一篇博文几千字啊!
@苏扬 呃?你没高清吧,这是向推发送一条这样的推: 『文章更新』文章标题,文章链接
什么时候能畅通无阻的上twitter啊
@疾风 你不在国内的时候
嘎嘎嘎,以后小邪说不定会用到这个的呢 ~
现在就是觉得,手工发布有点儿成就感的说 ~
@evlos 的确,
小Z天天都这么折腾吗?
@GEZ鸽子 叫我小z,我感觉年轻了10多岁
我还是用人工发送...
我是来cp的。话说这几天cp了你很多东西~~嘿嘿
@阿修 cp多好啊