WordPress 实现“您的足迹”功能

今天手贱,又小小地折腾了一下 WordPress,我也不知道该怎么描述这个功能,可能标题让你有点晕,我们还是先看效果吧。如果是之前留过言的访客,请看内页侧边栏,我新添加了一个“您的足迹”,可以看到,这里列出了留言访客的最近10条评论,当然,只能看到你自己的最近10条评论,原理就是调用记录在你浏览器中的 Cookies,如果你是第一次来访,或者刚刚清空了浏览器的缓存,那就看不到“您的足迹”这个板块了。

这其实就是一个最新评论功能的修改版,最新评论中指定隐藏管理员评论,而在“您的足迹”中正好是相对的,要指定显示某一个访客的评论,这里的访客就是指当前浏览器 Cookies 中记录的上一次评论者的信息。明白了原理,实现这个功能也就不难了,在最新评论代码的基础上,把 Cookies 中的访客信息作为变量传递给 comment_author 这个字段就可以了。

把以下代码复制到 WordPress 主题文件中需要的地方,比如说 sidebar.php:

<?php
    if($_COOKIE["comment_author_" . COOKIEHASH]!=""){
        global $wpdb;
        $sql = "SELECT DISTINCT ID, post_title, post_password, comment_ID, comment_post_ID, comment_author, comment_date_gmt, comment_approved, comment_author_email, comment_type, comment_author_url, SUBSTRING(comment_content,1,25) AS com_excerpt FROM $wpdb->comments LEFT OUTER JOIN $wpdb->posts ON ($wpdb->comments.comment_post_ID = $wpdb->posts.ID) WHERE comment_approved = '1' AND comment_type = '' AND comment_author = '".$_COOKIE["comment_author_" . COOKIEHASH]."' AND post_password = '' ORDER BY comment_date_gmt DESC LIMIT 10";
        $comments = $wpdb->get_results($sql);
        foreach ($comments as $comment) {
            $output .= "\n<li><a href=\"" .get_permalink($comment->ID)."#comment-".$comment->comment_ID. "\" title=\"" . $comment->post_title . " 上的评论\">".strip_tags($comment->comment_author).": ". strip_tags($comment->com_excerpt) ."</a></li>";
        }
        $output = '<h3>您的足迹</h3><ul>'.$output.'</ul>';
        $output = convert_smilies($output);
        echo $output;
    }
?>

因为我水平有限,就不一一解释以上代码的意思了,怕误导大家,另外样式表我也不提供了,每个主题的样式都各不相同,这个大家自由发挥吧。如果你嫌以上代码太累赘,可以把代码封装起来放在 WordPress 主题的 functions.php 里,然后在需要的地方调用,这个扩展也不在本文讨论范围。

下面给第一次来访而看不到效果的朋友截了一张图,也欢迎新来的朋友踊跃留言测试呀~

  1. Pingback: 新增访客历史评论功能 | woniuren博客

  2. Pingback: iNove修改小记 - Let's whisper

  3. Pingback: Wordpress 实现“您的足迹”功能 - 无聊呀

  4. Pingback: 添加了“您的评论”功能 | OnC

  5. Pingback: WordPress记录读者看过的文章和已经发过的评论 – 聆听大海

  6. Pingback: 看看大家都说了些什么 | Rusaer Blog

  7. 兄弟,当初我就想出这个功能,可惜没有说出来,今天你加上这个功能,实在是太好了,感谢国家,感谢万戈啊!呵呵!我就是想另外开一个页面用来显示全部评论,哈哈!!!!! 希望你也就加上这个“更多评论”的功能,这样我可以看一下在贵站留言过什么,呵呵 :)目前暂时只能看见10条了,希望你能多输出几条!

  8. Pingback: Wordpress 实现“您的足迹”功能

  9. 不经意的往边上一看,怎么全部都是“冰剑”的评论,我记得我没有灌水啊,我冤枉啊。。。
    再仔细一看上面的“足迹”二字,我就想到肯定又是个好玩的东西。
    站内搜索“足迹”二字,顺便看看高亮的效果。
    一举两得啊。。。

  10. Pingback: 新版功能测试,留下“您的足迹” | 3Q博客

  11. 您好,请问下怎么将_e(’Author’)传到一个参数里面而不输出的呢?因为我这个主题在sidebar.php里面输入汉字就网页中就出现乱码了

      • 直接在sidebar.php中输入汉字,就会出现乱码,但是经过_e("test")这样一道就好了,原来__("test")这个函数可以输出到变量里面而不会echo出来

      • 是编码错了,我改成了bom的utf8编码格式就好了,但是
        $temp=__("test");
        echo $temp ;//输出的结果仍然是test,而不是我翻译之后的’测试‘
        万戈兄知道怎么传这个翻译的结果的吗?谢了

  12. 这功能我很喜欢,但我没有技术,不会弄,我自己的博客都是直接用程序的,对于哪些代码,看不懂,又不会啊,楼主,有没有傻瓜的添加方法的

  13. 感觉这个功能会遭遇Google日历一样的下场,多少有点鸡肋,留着占地方……倒是蛮新鲜的

  14. :arrow: 点了n次Submit(Ctrl+Enter)才成功,虽然页面显示“本文已盖1层楼”,但是毫无疑问前10都悬……

  15. 1.蛋卷
    2.猪八戒
    3. winy
    4.小闇
    5.猪八戒
    6.小闇
    7.the7in
    8.猪八戒
    9.winy
    10.小闇
    11.猪八戒
    总结
    猪八戒4个沙发
    小闇3个沙发
    winy 2个沙发
    蛋卷1个沙发
    the7in 1个沙发