Pas de nouveau commentaire pour toi : sauf si c’est ton premier.

Pas de nouveau commentaire pour toi : sauf si c’est ton premier.

Quelle astuce se cache derrière ce titre … ? C’est simple :

Je souhaitais faire en sorte qu’une personne ayant déjà commenté un article ne puisse pas recréer un second commentaire parent dans ce même article.

Buuuuuuuut !

Le but est alors de forcer la personne à répondre à son propre premier commentaire.

J’ai utilisé ce code sur ma version 3 du site car à l’origine je ne chargeais que les 5 premiers commentaires parents et leurs réponses, le reste pouvait être chargé à la demande en ajax, solution abandonné au final, mais c’est un autre sujet.

J’ai gardé ce système car il me plait, tout bêtement !

Hooooooook !

J’utilise le hook preprocess_comment que j’avais déjà utilisé dans l’astuce pour empêcher l’usurpation d’identité dans les commentaires.

Il va me permettre de toucher aux données avant l’insertion en base. Je vais alors chercher si l’auteur du commentaire en question a déjà commenté cet article (je prends le premier, parent à 0), si oui, je prends son ID et je le force.

Son commentaire deviendra alors une réponse à son propre commentaire !

Seuls les admins peuvent créer de nouveaux parents, après tout, ils sont admins !

Coooooooode !

add_filter( 'preprocess_comment', 'baw_no_double_thread' );
function baw_no_double_thread( $comment )
{
if ( current_user_can( 'administrator' ) ) {
return $comment;
}
global $wpdb;
if ( ! $comment['comment_parent'] ) {
$c = $wpdb->get_var( $wpdb->prepare( 'SELECT comment_ID FROM '.$wpdb->comments.' WHERE comment_post_ID = %d AND comment_author_email = %s AND comment_parent = 0', $comment->comment_post_ID, $comment['comment_author_email'] ) );
if ( (int) $c > 0 ) {
$comment['comment_parent'] = $c;
}
}
return $comment;
}

Boooonuuuus !

Vous aurez remarqué que le bouton « Répondre » est également sur le dernier niveau ?

Cette astuce vient de chez mon ami Greg, encore une fois, j’utilise son talent ici !

Alors, plus court pour une si grande efficacité non ?

Vous aimez ? Partagez !


Réagir à cet article

220 caractères maximum