wordpress同步指定文章的评论到新浪微博

之前一直在想通过更新自己网站的指定的文章的评论来更新自己的微博。这样做对我来说有几个好处:

1,自己能控制自己所有的数据,可以随时备份,并能与自己以前写的微博类型的碎碎串联上,即http://little8.com/tag/littlewords/

2,能省很多的流量(多达90%)。如果是手机上新浪微博的话发一条微博至少是要20K,其它微博如TWITTER,网易微博,搜狐微博还有FOLLOW5,他们的手机微博,即使是最简洁版,发一条微博最少也得20K。而现在我发送一条微博只要2K,甚至比手机客户端所用的流量还要少。方法是:安装一个手机访问插件,我使用的是MOBILEPRESS。我的手机是山寨手机,不支持JAVA扩展,有个自带的WAP浏览器,可以保存网页,我把我要通过评论发送微博的文章的发表评论页面保存网页到手机里,然后下次就能通过已经保存的页面去发送评论了,发送成功后会出现一个找不到指定网页,这是因为自己手机不支持JS,但是已经发送成功了,加为不支持JS所以不会加载发送成功后的页面,能进一步到达省流量的目的,当然如果你的手机高档可以在设置里把JS关掉,这样就得了。可这样会出现一个问题:Blocked by CommentsUseCookies 因为不支持JS,系统会自动把你的评论标记为垃圾评论,这样我们就得用到AKISMET这个插件了,只要你启用了这个插件,并在评论管理里把这个垃圾评论标记为“这不是垃圾评论”后,AKISMET会从中学习不会把以后的带有BLOCKED BY COMMENTS USE COOKIES标记为垃圾评论了。

3,可以更灵活地外部调用。

(1)因为WORDPRESS可以评论输出RSS FEED。这样,还可以订阅,或者用一个FLASH FEED READER来外部调用,可以像新浪的博客挂件一样做一个WIDGET,挂到自己其它的博客空间。

(2)甚至还可以通过水印功能生成有最新几条评论的图片做为自己的修改签名。

4,同步到微博后,可以每条微博都带一个这个评论页面的链接,对于自己博客的推广大也有一点好处。

考虑了以下几个因素:

1,同步延迟 时间(不要超过1个小时)  2,同步内容(能摘要显示)  3,稳定性(不要常常被墙或者宕机)

自己曾经尝试用过的办法:

1,通过指定文章的评论同步更新到TWITTER,然后通过GAE开源程序twitter-feed同步到新浪微博(也支持网易,搜狐,开心网,人民网,嘀咕、9911、做啥、FLLOW5等国内主要微博。)
同步文章评论同步到TWITTER有两种办法,一是通过插件实时更新。二是通过同步评论FEED到TWITTER.
我用过几个插件,可发现所有这些插件都只是把评论的链接发到了我的TWITTER上。放弃不用。
同步FEED到TWITTER有很多办法,我用过其中两个。(1)使用FeedBurner同步Feed到Twitter(2)使用TwitterFeed同步FEED到TWITTER 我用了几天,发现不是很好。首先是这两个同步工具的延迟太久了,虽然网上说GOOGLE的FEEDBURNER延迟只有十分钟,可我发现常常是一个小时,甚至是两个小时,尤其是在周末,TWITTERFEED说是30分钟同步一次,实际上也不止。另外一个就是这他们同步BODY好像不到100个字,如果长一点就看不了了。
然而这还不是我放弃这个方法最主要的原因。主要原因是这个后面GAE上的TWITTER-FEED这个程序有问题,而且问题应该不是程序本身,而是 我估计 GFW。 我同步到了TWITTER共有130条信息,而TWITTER-FEED只给我同步到我的新浪微博30条!这么好的程序,可惜自己用不爽。

2,WP 2SINA,用后才知道,只能发个新日志的地址到微博上,不用。

3,通过新浪微博的关联博客功能同步。

也许你会骂我了,这同样行不通的。也许是。但我发现了个技巧。一般来说在围脖的工具-关联博客 里大家都是填写自己的博客主页地址如http://little8.com仅此而已,这样,新浪微博自己关联的时候也就只是你的博客的新文章了。那我们把这个关联地址换成具体一篇日志的地址会怎样呢?如:http://little8.com/2010/05/01/little-words-2010-05/呵呵,本人测试,新浪微博是会自动关联这篇日志的评论的,呵呵。每发一条评论他都会关联去的。

但这样还是有点小问题,那就是关联过去的只是“来自 评论者名 加 评论地址”这样的微博,也就是评论的具体内容一个字也不会显示在你的微博里。人家不会总来点链接查看你的更新吧?这样也让人很烦的。我的解决办法比较傻,直接把我想要说的话写在评论的评论者名这个框里,这样关联到新浪微博里了就会显示出你发表的评论信息了。
但到这里还没有完呢。一般来说评论者名这个框输入字数是有限制的,一般是50个字符,具体是多少你可以在你正在使用的WORDPRESS的主题的comments.php里查看,比如我正在用的这个主题的字数限制是50,这评论框代码是:

type="text" value="" size="30" maxlength="50" tabindex="3" />

[/code]
我把maxlength="50" 修改成了110因为新浪关联时会加上“来自:”和评论地址的缩短网址如“http://sinaurl.cn/hel2B”这样就去了30个字,所以我就只限制为110了,因为我不想让我的粉丝们点来看没有完的几个字,而且我的山寨手机也只能最多输入120个汉字。
但,请原谅我又用了次但,还有一点要注意,那就是WORDPRESS的MYSQL数据库。在数据库里评论者名对应的字段是wp_comments里的comment_author,它的类型是TINYTEXT,而TINYTEXT最多只能是255(2^8-1)个字符,换成了汉字是不是85呢?我不清楚,反正,作者名只会有85个汉字。把它的类型改成TEXT就可以了,TXET是最大长度65535个字元(2^16-1) ,至少也有好几千字了吧。(如何修改一般MYSQL数据库都可以通PHPMYADMIN控制面板进入,点你的WP数据库,点wp_comments 点 结构 找到 comment_author 点那支笔“修改” 在类型的下拉框里选择 TEXT然后促成。这下全部搞定。
虽然新浪关联延迟得有点久,大概30分钟,可很稳定,每次关联新浪会关联最新三条评论(可能不太准确,只测试了一次),每个评论会带有一个这个评论的链接的如:http://sinaurl.cn/hel2B就URL定向到http://little8.com/2010/05/01/little-words-2010-05/#comment-1257,呵呵,看到后面的#没有,它是会带粉丝直接到这条评论的。这样,用户体验不会很差吧,呵呵,能给自己的博客打打小广告了。

上面的方法都是我这个不懂一点点程序的人所能想到的了,唉,要是我能编程的话,自己直接写个可以任意同步指定日志的评论到所有微博的插件了,而且还有过滤功能,只同步自己发的评论,而不同步其它网友的评论。不知有没有高手看到这个日志,看到了能帮我写个这样的插件么?先谢了。

本文纯原创,如果要转载请加上本文的的链接:http://little8.com/2010/05/21/wordpress-comments-to-weibo/

另外有兴趣交个朋友请加我新浪微博http://t.sina.com.cn/littlehi.

//新发现点问题////

1,TWITTER不能同步到新浪微博,的确是GAE的问题,原因:get twitter data error. /statuses/user_timeline/Junglehi.xml?since_id=14535216825 Rate limit exceeded. Clients may not make more than 150 requests per hour. 月光的解释是:调用Twitter API的时候,失败率非常高,几乎有一半的情况,调用的时候会提示“Rate limit exceeded. Clients may not make more than 150 requests per hour.”,这让我怀疑GAE的外部IP是不是非常少,还有很多第三方程序在GAE上调用Twitter API,才导致每小时的调用超过150次,否则的话,光我自己的调用绝对不会有这么高的频率,大概是因为Twitter没有将GAE的IP设置为白名单,如果有一天Twitter不限制GAE的IP,那应该就没什么问题了。

2,可以修改下VHTWEET(vikinghammer-tweet)这个插件,如果评论没有多于140字则可以把评论内容同步到TWITTER,超过的话还只能是一个网址,摘要我不会。设置如下,打开vh_tweet.php,找到:

// build the full tweet
$tweet = “New comment on {$post->post_title} by {$comment->comment_author} {$link}”;

// if the tweet was too long, take out the title
if (strlen($tweet) > 140) {
$tweet = “New comment by {$comment->comment_author} {$link}”;
}

// if it is still too long, just put in the link
if (strlen($tweet) > 140) {
$tweet = “New comment {$link}”;
}

修改为:

// build the full tweet
$tweet = "new comment on {$post->post_title} by {$comment->comment_author}:{$comment->comment_content} {$link}";

// if the tweet was too long, take out the title and author
if (strlen($tweet) > 140) {
$tweet = "{$comment->comment_content} {$link}";
}

// if it is still too long, just show content
if (strlen($tweet) > 140) {
$tweet = "{$comment->comment_content}";
}

 // if it is still too long, just put in the link author and title
 if (strlen($tweet) > 140) {
$tweet = "new comment by {$comment->comment_author} on {$post->post_title} {$link}";
} 
2 Comments

Add a Comment

Your email address will not be published.