为何弃用社会化评论?

曾经有一段时间对社会化评论平台情有独钟,一方面类似的平台功能都很丰富,界面设计也很专业,运用适当的确可以给网站带来一定的社会化流量,当然凡事都有两面性,经过一段时间的测试,先后使用过灯鹭平台的社会化评论,多说社会化评论,友言社会化评论,国外的Disqus Comments System等,简单说说各自的优缺点:

1,灯鹭的社会化评论应该功能是最全面而且跟WordPress结合的最好的,举个最简单的例子,在未登录状态下直接从评论框处的社会化登陆方式登陆,只有灯鹭平台的可以实现将评论框处的登陆同时也传递给整站的登陆,简而言之就是评论框处登陆以后,整站都显示已登陆了,别的几个平台测试过多少都有点问题,但是灯鹭平台有一个致命的弱点就是服务器坑爹的龟速,硬件上的投入不够足以让很多用户望而退步;

2,多说社会化评论应该是这几个评论中使用最长时间的一个了,总体还算中规中矩,但是不知道最近怎么回事总抽风,动不动评论就消失了,然后第二天又有了,如此反复,坚决弃用了;

3,友言社会化评论明显的抄袭国外的Disqus,但这个绝对可以有,不可以有的就是,评论用户所带的外部链接竟然连nofollow属性都没设置,这个算是一个很大的问题,尤其对于seo很看重的站点来说,这个问题无法容忍,同样坚决弃用;

4,Disqus Comments是这几个社会化评论中用户体验最好,界面设计也最好的一个,也曾经是我坚决的首选方案,无奈大家都懂的原因,这个平台用到了国内不允许存在的facebook,twitter等的平台,可以想象载入基本瘫痪,无奈只能弃用。

综合以上比较,最后毅然决然全部弃用,重新启用WordPress原生态尽管有点简陋的Comments功能,当然既然要重新启用自带的评论功能,肯定要对这个简陋的功能进行一些改进,比如适当的ajax运用,然后进行微数据重构,有关微数据重构相关知识,请参考本站之前写过的一篇教程:WordPress SEO ☞ WordPress网站终极优化指南,要想理解什么是微数据,那么我们一定要知道什么是Schema.org:

什么是Schema.org?

Schema.org是一个有关微数据结构标准化的网站,网站开发人员采用此标准标识网页以后,该网页里边的数据结构可以被众多大型搜索引擎很好的识别支持,比如Bing,Google,Yahoo!和Yandex(一个最近两年很火的俄罗斯搜索引擎)可以很好的识别通过此标准标识过的网页,并且能良好的显示搜索结果,从而让用户能很轻松的找到目标网页。

很多网站通过数据库来存储结构化的数据,当这些数据被转化为HTML以后这些结构化数据就失去了原本的结构,从而变得难以识别,我们都知道一个有着良好的数据结构的网页经过搜索引擎解释以后会展现给搜索用户最具相关性的内容,因此如何结构化网页数据变得非常的重要。

通过以上简单的介绍,我们大体了解了一下什么是微数据,简而言之就是用一定的标准格式来重新语义化网页数据显示,让各大搜索引擎尤其是google能更好的识别出来,简单给大家一个截图,比如本站前段时间加入的评分功能,就是运用了Schema.org的标准格式,Google很给力的很快的在搜索结果中给了显示,截图如下:

Schema

看到以上截图中间部分的评分了吧,亮眼的黄色评分尽管不会直接给你带来排名的变化,但是无可否认会给访客一个更有点击欲望的暗示。

如何对WordPress的评论进行微数据化?

我们都知道WordPress默认的评论格式很简陋,同时还很难自定义,默认是用wp_list_comments这个函数来载入所有的评论,幸好这个函数支持一个callback参数,可以通过在functions.php里边重新一个语义化的评论输出结构,然后通过callback给wp_list_comments,那么我们就来实际进行这个过程。
首先在模版functions.php里边定义一个自定义评论函数如下:

//Theme comments lists
function eastdesign_comment($comment,$args,$depth) {
$GLOBALS['comment'] = $comment;
echo ' <li itemtype="http://schema.org/Comment" itemscope="" itemprop="comment" ';comment_class();
echo ' id="li-comment-';comment_ID() ;
echo '" ><div id="comment-';comment_ID();;
echo '" class="comment-body"><div class="commentmeta">';
echo get_avatar( $comment->comment_author_email,$size = '36');
echo '</div>';if ($comment->comment_approved == '0') : ;
echo ' <br /><em style="clear:both;">';_e('Your comment is awaiting moderation.') ;
echo '</em><br />';endif;;
echo ' <div class="commbg"><div class="commtop"><div class="commentmetadata"><time datetime="'.get_comment_date('Y年n月d日').'" itemprop="datePublished">';
printf(__('%1$s %2$s'),get_comment_date('Y/n/d'),get_comment_time('G:i'));
echo '</time></div><div class="vcard"> ';printf(__('%s'),get_comment_author_link()) ;
echo '&nbsp; 说道:</div></div><div class="commcon" itemprop="description">';comment_text() ;
echo '<div class="reply">';comment_reply_link(array_merge( $args,array('depth'=>$depth,'max_depth'=>$args['max_depth'],'reply_text'=>__('Reply')))) ;	
echo ' </div></div><div class="common-bottom"></div></div></div><div class="clear"></div>';
}

然后在模版comments.php里边通过以下代码输出自定义后的评论数据:

<ol class="comment_list">
<?php wp_list_comments('avatar_size=48&type=comment&callback=eastdesign_comment&per_page=20&max_depth=10'); ?>
</ol>

通过以上改造以后,实际看到评论数据里边已经带有了标准的Schema.org的微数据格式,不过有个小问题就是通过get_comment_author_link()这个函数生成的评论作者的链接没有带微数据格式,因为这个函数涉及到了WordPress的核心函数,直接更改核心函数显然不利于以后的升级,于是想到了通过add_filter的方式来Hack一下,于是在刚才functions.php里边再加入以下代码:

add_filter( "get_comment_author_link", "eastdesign_modifiy_comment_author_anchor" );
function eastdesign_modifiy_comment_author_anchor( $author_link ){
    return str_replace( "<a", "<a itemprop='author'", $author_link );
}

通过以上代码Hack以后,输出的评论作者的链接里边就带上了itemprop=’author’的结构化标签。

至此评论的微数据化过程基本完成,我们来检测一下成果如何,通过使用 Google结构化数据测试工具 我们拿一篇有评论数据的文章检测试试看效果:

在Mac OS X Lion上运行 gogo6 Client(原创)

以上测试结果显示Google已经识别到了所有的评论数据,这样该篇文章一段时间没做过任何更新,但是所带的评论更新也会作为微数据更新的一部分,从而影响到该文章的权重。