修改FEED模板友好同步WORDPRESS评论到新浪微博

修改WORDPRESS FEED输出模板,利用新浪的关联博客功能可以十分友好地同步WORDPRESS评论到新浪微博。

为什么要修改FEED模板呢?因为新浪微博关联博客只会包含把FEED标题与文章链接,而不包含FEED description,即微博内容为:文章标题+链接 修改模板在对FEED TITLE进行修改,添加评论作者 评论内容 并使用@和# 变同步微博内容为 @评论作者+#文章标题#+评论内容+链接
具体效果可以参见我的新浪微博:t.little8.com 具体一条微博 http://t.sina.com.cn/1659950807/wr0sOtC27U

方法如下:

一,打开wp-includes/feed-rss2-comments.php大概在41行找到如下代码:

<title><?php
			if ( !is_singular() ) {
				$title = get_the_title($comment_post->ID);
				$title = apply_filters('the_title_rss', $title);
				printf(ent2ncr(__('%2$s:%1$s')), $title, get_comment_author_rss());
			} else {
				printf(ent2ncr(__('By: %s')), get_comment_author_rss());
			}
		?></title>

修改为:

		<title><?php
			if ( !is_singular() ) {
				$title = get_the_title($comment_post->ID);
				$title = apply_filters('the_title_rss', $title);
				printf(ent2ncr(__('@%2$s:#%1$s#')), $title, get_comment_author_rss());
			} else {
				printf(ent2ncr(__('By: %s')), get_comment_author_rss());
			}
		?><?php comment_text_rss() ?></title>

二,新建一个HTML文档上传到你的网站,在关联博客地址栏输入这个页面的URL,如http://littlebar.tk/feeds4littlebarcomm.html。
新建文件档代码可以参考下面


<html xmlns="http://www.w3.org/1999/xhtml"> 
<head profile="http://gmpg.org/xfn/11"> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>feeds for my little8 comments</title> 
<link rel="alternate" type="application/rss+xml" title="feeds for my little8 comments" href="http://littlebar.tk/comments/feed/" /> 
</head> 
<body> 
Sync my comm feed 2 sina t
</body> 
</html> 

为什么不直接填入评论FEED地址http://littlebar.tk/comments/feed/呢?因为这样关联不上,其实是下面代码作怪:

<link rel="alternate" type="application/rss+xml" title="feeds for my little8 comments" href="http://littlebar.tk/comments/feed/" /> 

没有这一段代码新浪微博就不能认识你的FEED。

三,完成上面两步,你就发表个评论试试看,因为新浪微博同步FEED时间是几分钟到几个小时不等,所以实时同步效果不佳。还要说两点:

1,上面FEED模板的修改只对全局评论FEED(comments/feed)输出样式有作用,单篇日志评论和文章FEED输出不受此影响。

2,如果FEED里标题字数超过了140字可能会导致同步失败的。(时间太短,没有测试就来更新博客了,博客更新太慢了,心急了)

3,当然你也可以在其他的微博使用关联博客功能同步你的博客上的评论。理论上digu/sina/zuosa/follow5/9911/豆瓣广播/鲜果联播/人间网/人人网/网易微博/腾讯微博都有这个功能吧~

后记,我是一个同步按,一直是通过更新博客文章(tagge with littlewords)评论来更新自己的微博的,以前用过N多方法,你可以从下面相关文章看到的。可问题不断,如TWITTER对GAE API调用次数的限制,TWITTER 强制使用OAUTH授权,前天又把微博ID给变了导致使用TW2OTHER同步微博时疯狂刷屏……唉,真的不懂技术又不想学又要装着懂一点,这样活得好累啊。总算又能更新下博客了。

//201012210116更新
补充说明如果你不想把所有评论内容同步过去 或者因为字数超过140导致无法同步 可以截取指定评论字数 代码如下:

把wp-includes/feed-rss2-comments.php 41-50行(title部分)替换为:

		<title><?php
			if ( !is_singular() ) {
				$title = get_the_title($comment_post->ID);
				$title = apply_filters('the_title_rss', $title);
                                //截取评论前40个字符 相当于20个汉字 多余字数用省略号替代
				$comm_content = mb_strimwidth(strip_tags(trim($comment->comment_content)),0,40,'...');
                printf(ent2ncr(__('By:@%1$s on #%2$s# %3$s')), get_comment_author_rss(), $title, $comm_content);
            } else {
                printf(ent2ncr(__('By: %s')), get_comment_author_rss());
            }
		?></title>

演示查看http://littlebar.tk/comments/feed

//201012212037更新
如果只想应用到单篇文章的评论FEED,则只用修改单篇日志FEED输出标题部分代码

//这是单篇日志标题FEED输出部分
else {
                printf(ent2ncr(__('By: %s')), get_comment_author_rss());
            }

为:

//修改单篇日志标题FEED输出部分
else {
			    $title = get_the_title($comment_post->ID);
				$title = apply_filters('the_title_rss', $title);
				$comm_content = mb_strimwidth(strip_tags(trim($comment->comment_content)),0,40,'...');
                printf(ent2ncr(__('By:@%1$s on #%2$s# %3$s')), get_comment_author_rss(), $title, $comm_content);
            }

看到代码里!is_singular没有?其实自己多看看就能自己修改了的,我也是一点不懂PHP的

//如果输出的评论不是单篇文章的话 即定义全局评论FEED输出样式
if ( !is_singular() ){ }
//如果是的话 即定义单篇日志或者页面评论FEED输出样式
else { }

演示查看http://littlebar.tk/2010/11/07/modify-wordpress-feed-template-synchronize-wpcomments-to-sina-microblog/feed/

5 Comments

Add a Comment

Your email address will not be published.