需求分析 {#i}
有些人留言时希望内容只对留言的人可见,类似私信。
实现方式 {#i-2}
WordPress 评论后会保留评论者的 cookies,根据这个 cookie 来判断哪些评论是自己发出的,自己可以看到自己的发表的私密评论。站长可以看到所有的评论。如果浏览器 cookies 被清空,你会看不到你自己的私密评论(此私密信息会连你也不认识:) )。
功能代码 {#i-3}
源码来自大发博客,利用钩子和过滤器,利用了 wp_commentmeta 这个表可以存储自定义字段的特性。
函数说明 {#i-4}
update_comment_meta(): updates the value of an existing comment meta key for the specified comment.
代码逻辑 {#i-5}
利用 add_action 触发。只要发表评论,就触发判断,是否为私密评论。如果是私密评论,则加上自定义的 commentmeta: _private。在读取私密评论时,如果评论存在 _private 的自定义属性标记,则不显示具体评论内容。
在大发代码基础上,做了一些样式上的修改:
function liao_private_message_hook( $comment_content , $comment){
$comment_ID = $comment->comment_ID;
$parent_ID = $comment->comment_parent;
$parent_email = get_comment_author_email($parent_ID);
$is_private = get_comment_meta($comment_ID,'_private',true);
$email = $comment->comment_author_email;
$current_commenter = wp_get_current_commenter();
if ( $is_private ) $comment_content = '#私密# ' . $comment_content;
if ( $current_commenter['comment_author_email'] == $email || $parent_email == $current_commenter['comment_author_email'] || current_user_can('delete_user') ) return $comment_content;
if ( $is_private ) return '<span style="color:#A6A6A6"><i class="fa fa-lock fa-fw"></i>该评论为私密评论</span>';
return $comment_content;
}
add_filter('get_comment_text','liao_private_message_hook',10,2);
function liao_mark_private_message( $comment_id ){
if ( $_POST['is-private'] ) {
update_comment_meta($comment_id,'_private','true');
}
}
add_action('comment_post', 'liao_mark_private_message');
我们需要加一个是否设为私密评论的选项。如果你的评论框是 HTML 表单,那么就加个单选框吧。
<input type="checkbox" name="is-private">
效果如下:
勾选"设为私密评论"并发表评论之后,在前台其他人看到该消息都显示为:"该评论为私密评论"
。效果如下图:
至于样式,自由发挥。
如果你已按照本教程的方法顺利实现了私密留言评论的功能。如果需要把现有的某个正常留言在前台页面设为私密,你可以继续阅读这篇文章:
WordPress AJAX 实现设置留言评论为私密
本文纯属个人兴趣爱好,如果你没有折腾 WordPress 的爱好,请忽略此文。 基于一些访客希望在料网上发表私密的留言评论,于是给料网添加了发表私密留言评论的 ..
就这样~