分享所分享的

WordPress允许重复评论 WordPress去除重复评论限制

本文最后更新于2018年11月8日,因长期没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
文章目录[隐藏]

我们知道为了防止用户在提交评论时因评论延迟而重复点击提交造成重复评论的现象,还有为了防止垃圾评论spam,WordPress本身在同一篇文章内是不允许有相同评论出现的。
而本站的主题添加了快捷评论功能,方便用户点击快捷评论按钮就可以提交一些常用语,当一个用户在这篇文章中使用了一个常用语后,下一个用户再想提交相同的评论就会被WordPress所限制。
为了解决这个问题,有两种方法:

一、修改WordPress核心文件

WordPress中检测重复评论的函数为wp_allow_comment(),它在wp目录\wp-includes\comment.php文件里面。

 if ( $wpdb->get_var( $dupe ) ) {
    /**
     * Fires immediately after a duplicate comment is detected.
     *
     * @since 3.0.0
     *
     * @param array $commentdata Comment data.
     */
    do_action( 'comment_duplicate_trigger', $commentdata );
    if ( defined( 'DOING_AJAX' ) ) {
        die( __('Duplicate comment detected; it looks as though you’ve already said that!') );
    }
    wp_die( __( 'Duplicate comment detected; it looks as though you’ve already said that!' ), 409 );
}

将它们注释掉即可。 没有相关的钩子可供返回值,所以只能改源文件达到目的。

二、自定义函数

方法思路:先给评论末尾添加一串随机数,绕过wp_allow_comment()函数,在刷新页面后再把这串随机数去掉。

function enable_duplicate_comments_preprocess_comment($comment_data)
{
    //add some random content to comment to keep dupe checker from finding it
    $random = md5(time());
    $comment_data['comment_content'] .= "重复评论{" . $random . "}重复评论";
    return $comment_data;
}
add_filter('preprocess_comment', 'enable_duplicate_comments_preprocess_comment');
function enable_duplicate_comments_comment_post($comment_id)
{
    global $wpdb;
    //remove the random content
    $comment_content = $wpdb->get_var("SELECT comment_content FROM $wpdb->comments WHERE comment_ID = '$comment_id' LIMIT 1");
    $comment_content = preg_replace("/重复评论\{.*\}重复评论/", "", $comment_content);
    $wpdb->query("UPDATE $wpdb->comments SET comment_content = '" . $wpdb->escape($comment_content) . "' WHERE comment_ID = '$comment_id' LIMIT 1");
    /*
        add your own dupe checker here if you want
    */
}
add_action('comment_post', 'enable_duplicate_comments_comment_post');

这样就能让所有人都重复评论。若只希望管理员能够重复评论,则加一个判断进行过滤:

if( current_user_can('administrator') ) {
    add_filter('preprocess_comment', 'enable_duplicate_comments_preprocess_comment');
    add_action('comment_post', 'enable_duplicate_comments_comment_post');
}
function enable_duplicate_comments_preprocess_comment($comment_data)
{
    //add some random content to comment to keep dupe checker from finding it
    $random = md5(time());
    $comment_data['comment_content'] .= "重复评论{" . $random . "}重复评论";
    return $comment_data;
}
function enable_duplicate_comments_comment_post($comment_id)
{
    global $wpdb;
    //remove the random content
    $comment_content = $wpdb->get_var("SELECT comment_content FROM $wpdb->comments WHERE comment_ID = '$comment_id' LIMIT 1");
    $comment_content = preg_replace("/重复评论\{.*\}重复评论/", "", $comment_content);
    $wpdb->query("UPDATE $wpdb->comments SET comment_content = '" . $wpdb->escape($comment_content) . "' WHERE comment_ID = '$comment_id' LIMIT 1");
    /*
        add your own dupe checker here if you want
    */
}

以上代码添加到主题的functions.php当中即可,That’s all.

×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
历史上的今天
十一月
8
    哇哦~~~,历史上的今天没发表过文章哦
赞(6) 打赏
未经允许不得转载:Andy's Blog » WordPress允许重复评论
分享到: 更多 (0)
标签:

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

WordPress允许重复评论-海报

分享本文封面