How can I limit the number of comments per registered user per day?

I found this code on WPSE:

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();
}

Note: It seems to limit the number of comments per post per user.

Read More

I want to limit the number of comments per registered user per day.

I would like to be able to change the amount of comments allowed per day in the code, please.


If someone could help me with the correct code it would be very much appreciated. Also where would I put this code in the comments.php file?

Thank you.

Related posts

Leave a Reply

2 comments

  1. You could pull all of the comments by current user and loop over them to see how may where today or you can create a custom sql Query to select just the count of comments for the last 24 hours, something like this:

    global $wpdb,$current_user;
    $sql = $wpdb->prepare("
        SELECT count(*)
        FROM wp_comments 
        WHERE comment_author = '%s'
        AND comment_date >= DATE_SUB(NOW(),INTERVAL 1 DAY);"
        ,$current_user);
    $count = $wpdb->get_results($sql);
    
  2. Here’s the working version, I referred the technique by @Bainternet to get it done. Just replace <?php comment_form(); ?> with this code

    <?php 
        global $wpdb,$current_user;
        $limit = 5; //this is limit per day per user
        $comment_count = $wpdb->get_var( $wpdb->prepare("
            SELECT count(*)
            FROM wp_comments 
            WHERE comment_author = '%s'
            AND comment_date >= DATE_SUB(NOW(),INTERVAL 1 DAY);"
            ,$current_user->user_login) );
    
        if($comment_count < $limit) {
            comment_form();
        }   
        else {
            echo 'exceeded comments limit - '.$limit;
        }
    ?>
    

    — Tested on WordPress 3.4.1 with TwentyTen theme installed on_

    Note –

    • Simply Hides the comment form from users with more than 5 comment for that given day Regardless of comment status
    • This will show comment form to unregistered users unless we disable it from – Discussion Settings