这功能用了好几年了,我真的忘了是从哪位朋友那里抄来的了。
如有冒犯还望莫怪。
当然,我的办法做了一点小小的改良,优点是不用直接修改comment-template了。
使用前提:
主题模板里评论框调用的是WP默认的 comment_form。
第一步
在主题的functions.php中增加如下代码:
function my_comment_form_field_author_before($field) { $commenter = wp_get_current_commenter(); if ( $commenter ) { $name = esc_attr($commenter['comment_author']); $email = esc_attr($commenter['comment_author_email']); } if ( $name ) { $comment_part.= sprintf('<div class="form_row"><span> %1$s %2$s <i class="show-form " >[编辑]</i>, 欢迎回来。</span></div>', $name, get_avatar( $email, $size = '24')) ; } else { $comment_part = '<div class="form_row"><span>你好,新朋友。留言前请先填写<b>昵称</b>和<b>邮箱</b>。</span></div>'; } $comment_part .= '<div id="author_info">'; return $comment_part.$field; } add_filter('comment_form_field_author', 'my_comment_form_field_author_before'); function my_comment_form_field_url_after($field) { $field .= "</div>"; return $field; } add_filter('comment_form_field_url', 'my_comment_form_field_url_after');
原理:
①通过wp_get_current_commenter函数,识别当前访问者是否曾经留过言。如果已经留过言,通过email地址获取头像。
②给三个输入框套上一层div,方便后面用js一起控制。
③利用了两个WP 的钩子函数,把修改的内容分别放到第一个输入框(author)的前面和最后一个输入框(url)的后面。
注意:
觉得斜体字不顺眼可以改,但是【编辑】两个字套用的class一定要与js里的一致
第二步
在主题的js文件里增加下面两个函数,没有js的自己创建一个:
$( document ).ready( function() { if ( $('.show-form').length > 0 ){ $('#author_info').toggle(10); } }); $(document).on('click', '.show-form', function() { $('#author_info').toggle(300); });
第一个函数在页面加载的时候调用,当用户上次留言信息存在时,隐藏三个留言者信息输入框。
第二个函数是点击【编辑】时候的响应。
第三步
CSS自理。
特意留言测试测试
我觉得还是我自己那样,不管如何都是输入框不错。(输入框自动载入cookie内容)
这样,有的人想换个身份还是不错的。2333
默认设定当然不错
输入框没折叠进去,没研究明白。
可能是cookie没保存
我就是用cookies进行记录信息的
WP 默认就是有cookie 的,中文圈广为流传的那个ajax comment,更是问都不问直接把cookie 存了。
我这里也是。
我记得以前是判断本地是否有cookie,然后在判断是否显示信息框
就是这回事。所以才不敢说原创。
这个如果可以用在typecho蛮不错的,我去扒扒大神的代码先,(●ˇ∀ˇ●)
到处都是。而且我估计有typecho直接能用的。