web-dev-qa-db-fra.com

Comment puis-je limiter le nombre de commentaires par utilisateur enregistré par jour?

J'ai trouvé ce code sur 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();
}

Remarque: Il semble limiter le nombre de commentaires par publication et par utilisateur.

Je souhaite limiter le nombre de commentaires par utilisateur enregistré et par jour.

J'aimerais pouvoir modifier le nombre de commentaires autorisés par jour dans le code, s'il vous plaît.


Si quelqu'un pouvait m'aider avec le code correct, ce serait très apprécié. Aussi, où pourrais-je mettre ce code dans le fichier comments.php?

Je vous remercie.

4
Chad

Vous pouvez extraire tous les commentaires de l'utilisateur actuel et les parcourir pour voir où ils se trouvent aujourd'hui, ou vous pouvez créer une requête SQL personnalisée pour sélectionner uniquement le nombre de commentaires des dernières 24 heures, comme suit:

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
Bainternet

Voici la version de travail, je me suis référé à la technique de @Bainternet pour le faire. Il suffit de remplacer <?php comment_form(); ?> par ce 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;
    }
?>

- Testé sur Wordpress 3.4.1 avec le thème TwentyTen installé sur _

Remarque -

  • Masque simplement le formulaire de commentaire des utilisateurs avec plus de 5 commentaires pour ce jour donnéRegardless of comment status
  • Cela affichera le formulaire de commentaire pour les utilisateurs non enregistrés, sauf si nous le désactivons -Discussion Settings
1
amit