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.
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);
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 _
- 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