限制每个用户每篇帖子的评论

时间:2013-08-09 作者:Christopher

我使用此代码将注册用户的注释限制为1,效果很好。问题是,当我在浏览器中单击“返回”按钮时,我可以再次发表评论。有没有什么有效的方法来限制评论?

非常感谢。

global $current_user, $post;
$args = array( \'user_id\' => $current_user->ID, \'post_id\' => $post->ID );
$usercomment = get_comments( $args );
if ( 1 <= count( $usercomment ) ) {
    echo \'disabled\';
} else {
    comment_form();
}

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

我想那个钩子pre_comment_approved 在这种情况下应该是完美的。

像这样的东西应该可以完成这项工作:

function my_pre_comment_approved($approved, $commentdata) {
    // you can return 0, 1 or \'spam\'
    if ( $commentdata[\'user_ID\'] ) {
        $args = array(
            \'user_id\' => $commentdata[\'user_ID\'],
            \'post_id\' => $commentdata[\'comment_post_ID\']
        );
        $usercomment = get_comments( $args );
        if ( 1 <= count( $usercomment ) )
            return 0;
    }
    return $approved;
}
add_filter(\'pre_comment_approved\', \'my_pre_comment_approved\', 99, 2);
过滤器应返回:

  • 0 (即“假”),如果评论不被批准1 (即“true”),如果评论应获得批准\'spam\' 如果评论应标记为垃圾邮件

结束