WordPress 私密评论#测试版#

私密评论理解起来比较简单,就是别人看不到。这个东西如果严格实现起来还是有一些难度的,但是想要实现一个简易版还是可以的。

一般来讲WordPress 评论后都会保留评论者的cookies,我们根据这个cookie 来判断哪些评论是自己发出的,这样不至于自己都看不到自己的评论。站长理所当然可以看到所有的评论。

实际过程中还有一个问题,就是如果这条评论是回复给别人的而且被回复这个人并不是网站管理员,那么我们也是希望这个人也可以看到评论的。

如果浏览器的cookies 被清空,那么你将看不到你自己的私密评论。当你使用以前的邮箱重新评论后,你的私密评论将被标记为可见。

功能代码

function fa_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 '该评论为私密评论';
    return $comment_content;
}
add_filter('get_comment_text','fa_private_message_hook',10,2);

function fa_mark_private_message( $comment_id ){
    if ( $_POST['is-private'] ) {
        update_comment_meta($comment_id,'_private','true');
    }
}
add_action('comment_post', 'fa_mark_private_message');

在评论的时候我们需要加一个是否发送私密评论的选项,这里要看你的主题评论表单是否使用了comment_form,如果是自己拼接的html 则需要手动添加,使用了comment_form直接添加如下功能代码即可。

add_filter( 'comment_form_defaults','fa_private_message_checkbox');
function fa_private_message_checkbox($default) {
    $default['comment_field'] .= '<p><input type="checkbox" name="is-private"></p>';
    return $default;
}

注意,输入评论内容的时候必须使用comment_text或者get_comment_text函数,私密评论前加上了#私密#标记。


最后,还是那句话,如果你能用在你优秀的付费主题中,不妨也意思意思感谢下我。

Comments : 43

  1. 我不是机器人。 :smile:

  2. 私密#测试

  3. 好像没有效果

  4. 添加到主题上没有效果 :???:

    1. @haha

      可能你的主题是假的

  5. 发哥,使用了代码后有侧边栏的主题在侧边栏启用最新评论显示,会显示出来。。。请问怎么把侧边栏一起隐藏呢。

    1. @Biebb

      那是你侧边栏最新评论的代码有问题。

    2. @bigfa

      我到侧边栏读取评论信息是调用数据库的。。醉了,,,搞不定了,发哥帮我看看代码

      发哥帮我看看呗。。之前我使用的是段代码也是无法隐藏,只有在前面加很多字,侧边栏设置显示评论字数7个,用自己添加的字盖过去,现在改用你这个高大上的,还不用写js的代码,貌似也是直接对文章评论页面有效,侧边栏我代码发给你了,有空的话能否帮忙看看。

  6. convert_smilies(strip_tags($comment->com_excerpt)))使用这个输出的评论,php小白。。嘿嘿,一点的看不懂,百度一大堆没找到啥有用的,还是来这儿求助了。。

    1. @Biebb

      apply_filters('get_comment_text',$comment->com_excerpt);
    2. @bigfa

      换成这样之后还是直接输出了评论,没有输出[ 此评论为私密评论 ] 强迫症理解下,,没弄明白没搞定。心里不踏实 :o

    3. @Biebb

      我搞错了。。直接用get_comment_text函数。。

    4. @bigfa word 哥,直接用函数评论全部空白了T.T
      嘿嘿,我把文件上传到 blog.biebb.online/widget-comments.zip ,你下载解压看看
      需要主题全文件我也一起发给你哈。

    5. @Biebb

      你要使用get_comments来获取评论,你这个sql 无法生效。我只能提供这么多信息了。

    6. @bigfa 好的,感谢大大,我研究研究

  7. 开启了用户必须注册并登录才可以发表评论 的时候,自己的评论也无法看到了。有什么办法可以解决?

    1. @haha

      不使用这个功能就可以了。

    2. @bigfa :???: 经常有外国的垃圾评论,开启这个功能才能杜绝他们。如果一定要保留这个功能,同时能正常使用私密评论功能,这怎样能并存?

    3. @haha

      你需要人民币 :smile:

    4. @bigfa :cry: 0.0
      ————
      这个圣诞老人跟圣诞帽很“应节”

  8. 很吊的功能,已扒。谢谢大发无私的奉献。

  9. :oops: :oops: :oops: :oops: :oops:

  10. 又找到一个好功能。。。

发表留言

人生在世,错别字在所难免,无需纠正。

Smilies powered by wp-alu

Post Comment