为WordPress增加私密留言评论功能

2020.04.29更新 PHP7中报错问题。

WordPress 站点的评论默认情况下都是公开的评论,也就是说只要是审核通过的评论,所有人(包括站长、留言者、游客等)都可以看到这条评论内容。如果我们想要实现只有留言者和站长看到的私密留言评论,那么应该怎么实现呢?幸好 Fatesinger 博主早已分享有相关教程,详见《WordPress 私密评论#测试版#》,不过我还是比较喜欢料网的这篇文章《WordPress私密留言评论》,里面把原理和具体操作过程介绍得相当详细。所以今天我们就以这篇文章结合 DUX主题来折腾一下 WordPress 站点增加私密留言评论的功能。

实现方式:

WordPress 评论后会保留评论者的cookies,根据这个cookie 来判断哪些评论是自己发出的,自己可以看到自己的发表的私密评论。站长可以看到所有的评论。如果浏览器 cookies 被清空,你会看不到你自己的私密评论(此私密信息会连你也不认识:) )。

代码逻辑:

利用 add_action 触发。只要发表评论,就触发判断,是否为私密评论。如果是私密评论,则加上自定义的 commentmeta: _private。在读取私密评论时,如果评论存在 _private 的自定义属性标记,则不显示具体评论内容。

DUX主题增加私密留言评论

  1. 打开 DUX主题的 functions.php 文件,在最后一个 ?> 的前面添加以下代码:
    //私密评论
    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="background-color: #ffff00; color: #666699;"><i class="fas fa-lock"></i>该评论为私密评论</span>';
        return $comment_content;
    }
    add_filter('get_comment_text','liao_private_message_hook',10,2);
    
    function liao_mark_private_message( $comment_id ){
        if ( isset($_POST['is-private']) ) {
            update_comment_meta($comment_id,'_private','true');
        }
    }
    add_action('comment_post', 'liao_mark_private_message');
    
  2. 我们需要加一个是否设为私密评论的选项。如果你的评论框是HTML表单,那么就加个单选框吧。
    <input type="checkbox" name="is-private">

至于DUX主题的添加,我已经集成到 为WordPress评论框添加表情、图片、签到等功能 文章中了,请点击下面的链接查看代码。

为WordPress评论框添加表情、图片、签到等功能-灵阳星空

© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏
分享
评论 抢沙发

请登录后发表评论