WordPress教程-允许重复评论 WordPress去除重复评论限制

WordPress教程-允许重复评论 WordPress去除重复评论限制

作者 : 资源客 本文共2468个字,预计阅读时间需要7分钟 发布时间: 2019-09-6 共198人阅读

我们知道为了防止用户在提交评论时因评论延迟而重复点击提交造成重复评论的现象,还有为了防止垃圾评论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
    */
}

 

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请不要用于商业用途!
3. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"qq301.com",如遇到无法解压的请联系管理员!
资源客是一个优秀的分享资源站,本站资源均为各位友友分享而来,特殊原创会标明如有侵犯版权等可联系772955675@qq.com 删除

资源客 » WordPress教程-允许重复评论 WordPress去除重复评论限制