记录并隐藏 WordPress 评论者信息

自从成功使用 JQuery 实现伪异步载入后,也就消除了我对 JQuery 莫名的心理障碍,对 JQuery 的兴趣也是与日俱增,现在发现用 JQuery 不但可以实现很多酷炫的效果,而且对提高访客体验也是很有帮助的。不过话说,自从给自己的 WordPress 引入 JQuery 后,测试数据证明我曾引以为傲的网站速度略有迟缓,为了更好的访客体验,增加更多的回头率,只好稍微牺牲一下速度,尽力在网站效果和速度之间找到一个平衡点,使之完美。

昨天就给自己的 WordPress 添加了记录访客 Cookies,并隐藏评论者昵称、邮箱、网址等个人信息的功能,这样可以让第二次回访的用户在留言时看上去如同管 理员登陆时的状态一样。网上参考了不少博文和资料,最后还是选择了 Leo.N 的方法,虽说他也是从别处挖来的,但是 Leo.N 写的很仔细,适合我这样的 JQuery 小白,拿来转载一下。

首先,我们要编辑 comments.php,在类似于:

<input type="text" name="author" id="author" value="<?php echo $comment_author; ?>" size="22" tabindex="1"/>

在评论者姓名输入框代码上方添加:

<?php if ( $comment_author != "" ) : ?>
<div id="welcome">
<?php printf(__('欢迎 <strong>%s</strong> 归来! '), $comment_author) ?>
</div>
<?php endif; ?>

然后再把三个评论者姓名、电邮、网址的代码输入框用 <div id="author_info"></div>包起来,到此,comments.php 修改结束;

然后,新建一个名为 infohide 的 js 文件,把以下代码放进去:

$(document).ready(function() { //开始
if($('input#author[value]').length>0){ //判断用户框是否有值
$("#author_info").css('display','none'); //将id为author_info的对象的display属性设为none,即隐藏
var change='<span id="show_author_info" style="cursor: pointer; color:#2970A6;">change &raquo;</span>'; //定义change,style是定义CSS样式,让他有超链接的效果,color要根据你自己的来改,当然你也可以在CSS中定义#show_author_info来实现,这样是为了不用再去修改style.css而已!
var close='<span id="hide_author_info" style="cursor: pointer;color: #2970A6;">close &raquo;</span>'; //定义close
$('#welcome').append(change); //在ID为welcome的对象里添加刚刚定义的change
$('#welcome').append(close); // 添加close
$('#hide_author_info').css('display','none'); //隐藏close
$('#show_author_info').click(function() { //鼠标点击change时发生的事件
$('#author_info').slideDown('slow'); //用户输入框向下滑出
$('#show_author_info').css('display','none'); //隐藏change
$('#hide_author_info').css('display','inline'); //显示close
$('#hide_author_info').click(function() { // 鼠标点击close时发生的事件
$('#author_info').slideUp('slow'); //用户输入框向上滑
$('#hide_author_info').css('display','none'); //隐藏close
$('#show_author_info').css('display','inline'); })})}}) //显示change

保存文件至主题目录下。

最后,在 footer.php 中引用 JQuery 和以上 infohide.js:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>
<?php if ( is_singular() ){ ?>
<script type="text/javascript" src="<?php bloginfo('template_url'); ?>/infohide.js"></script>
<?php } ?>

友情提醒:载入 JQuery 和 JS 的顺序一定不能搞错,否则就不成功了。至此,用 JQuery 隐藏回头访客资料输入框就完成了,童鞋快留言试试吧!

方法载自:http://leo-n.cn/hide-visitor-info-with-jquery.html

  1. Pingback: 保存并隐藏Wordpress评论者信息_宋夏博客

  2. Pingback: Comment_form()下实现隐藏评论者信息 « 没有直线的轨迹

  3. 我的评论是用comment_form()实现的。我尝试插入“欢迎XX归来”这段代码折腾很久没能完成 :arrow: ,请大师研究下赶快更新,造福群众啊~ :roll:

  4. 万戈大哥,用了后发现对我的主题,新访客不能显示输入信息框,我看到留言上也有人有类似的问题,最后我在三石映像那里找到了个解决办法:此处if($('input#author[value]').length>0){,改为if($('#author').val()!=""){ //判断用户框是否有值,对我的主题就有效了。。。

  5. Pingback: WP记录评论者信息,提高访客体验 - 奚少收藏小窝

  6. Pingback: 博客的几个小改动 » Emorsl Life

  7. Pingback: 三石映像 » 增强wordpress来访者的评论体验

  8. Pingback: 介绍本博客一个新作者和一些新变化 » 我要说

  9. 今天晚上我和张三又测试了!不过还是失败了!唉!好郁闷!明天我和张三一起找你问问,我们两个都无能为力了!

  10. 老万,有个问题请教
    我看见你在文章正文的超级链接都加上了CSS样式.
    我也想加,但是在CSS设定后会对文章内的图片造成影响.
    或者你可以告诉我如何让文章插入的图片不变成超级链接? :?:

  11. 客户端写入cookies,嗯,有想法,用cookies的话要注意cookies的安全,不过比Session的方法节省了很多服务器资源~好办法~

  12. 在评论者姓名输入框代码上方添加的代码中最后的这个可不可以用什么写法代替,不然在有的主题中就出现了灵异事件:就是IE下显示正常,其他浏览器下评论者信息框侧地消失了!
    这几天我就是在自己的电脑上测试,发现这个无法解决,正好你也在谈论这个 :smile:

  13. 这个不错,不过我的新主题是用php方法,jQuery只是给加了动态效果。。。。
    上次那个jQuery实现的点击链接替换文字貌似在opera下会造成链接无法跳转,我用if($.browser.opera){ return;}判断屏蔽opera了。。。你测试看看

  14. 嘿嘿,到万戈童鞋这里来学习一下 ~
    说实话我原来根本没有重视Cookies的作用 ~ 现在我觉悟了 ~!

    话说我想我迟一点会写好的一篇关于自动优化代码,去除代码空隙 ~
    自动Gzip压缩传输CSS和JS,自动将所有的JS和CSS整合成为俩文件的传说级插件 ~
    一定会对你提速有帮助的 嘎嘎 ~