Tout savoir sur WordPress
Tutoriel WordPress

Activer automatiquement les commentaires sur les articles

Cette astuce permet d’activer automatiquement les commentaires sur un article sans se soucier de l’encart “Discussion” lors de l’édition d’un article.

Dans un article, l’activation/désactivation des commentaires est facile à gérer grâce à la présence d’un encart “Discussion” dans l’édition des articles. Il permet d’activer ou non les commentaires, mais aussi les pings de chaque article.

Encart "Discussion" dans l'administration de WordPress
Encart "Discussion" dans l'admin de WordPress

Par défaut, les commentaires sont automatiquement activés sur tous les articles en cochant “Autoriser les visiteurs à publier des commentaires sur les derniers articles” dans la section “Discussion” du menu “Réglages” de l’administration.

Par contre, l’encart “Discussion” permet de désactiver les commentaires sur un article. Dans certains cas, comme sur GeekPress, vous savez que les commentaires doivent toujours être activés. Pour empêcher un membre de désactiver les commentaires sur un article, on serait tenté de supprimer l’encart “Discussion” grâce à la fonction remove_meta_box().

Cette technique pose un léger problème. La suppression de l’encart “Discussion” désactive les commentaires sur les articles !

Ayant été confronté à ce problème, je vous propose une astuce qui permet de désactiver l’affichage de l’encart “Discussion” tout en permettant d’activer automatiquement les commentaires sur tous les articles.

Copier le code ci-dessous dans le fichier functions.php présent à la racine de votre thème :
[pastacode lang=”php” message=”” highlight=”” provider=”manual”]


add_action( 'admin_menu' , 'remove_commentstatus_meta_box' );
function remove_commentstatus_meta_box() {
    remove_meta_box( 'commentstatusdiv' , 'post' , 'normal' );
}

add_action('save_post', 'auto_open_comments_and_ping_for_posts');
function auto_open_comments_and_ping_for_posts( $post_id )  {

    if( get_post_type( $post_id ) != 'post') return false;
	
    global $wpdb;
    $wpdb->update( $wpdb->posts, 
    	           array( 'comment_status' => 'open' ),
    		   array( 'comment_status' => 'closed', 'ID' => $post_id ),
    		   array('%s'),
    		   array('%s', '%d')
    		);
    
    $wpdb->update( $wpdb->posts, 
    		   array( 'ping_status' => 'open' ),
    		   array( 'ping_status' => 'closed', 'ID' => $post_id ),
    		   array('%s'),
    		   array('%s', '%d')
    		);	
}

[/pastacode]

Cet article a été mis à jour il y a 4554 jours - Il n'est peut être plus à jour !

Article écrit par Jonathan B.

Jonathan est le co-fondateur de WP Media, startup connue pour être l’auteur de WP Rocket et Imagify. Il est aussi co-organisateur du WordCamp Lyon et Paris.

12 Commentaires

  1. Bonsoir,peut-on avoir les commentaires des visiteurs et des inscrits sur la même page ou article mais que les commentaires des inscrits soient invisibles aux visiteurs?
    Merci

  2. @Darknopte : Il faudrait utiliser la fonction is_user_logged_in() dans le template pour savoir si l’on doit afficher les commentaires ou non.

  3. Bonjour,
    Il faut aussi activer la fonction “Discussion” qui n’est pas systématique. Cette option se coche dans “Options de l’écran” en haut à droit de la page “créer un article”. Apparaît ensuite une fenêtre “Discussion” en-dessous de l’encart dans lequel on rédige l’article et effectivement on peut cocher “Autoriser les commentaires.” Je me permets de préciser car je n’ai pas trouvé d’emblée la fenêtre “Discussion”, active sur certaine page et pas d’autre. Mëme si j’avais activé par défaut les commentaires en cochant « Autoriser les visiteurs à publier des commentaires sur les derniers articles » dans la section « Discussion » du menu « Réglages » de l’administration.

  4. J’ai un problème lié à l’activation des commentaires sous WordPress. Dans la section « Discussion » du menu « Réglages » de l’administration, j’ai coché « Autoriser les visiteurs à publier des commentaires sur les derniers articles », mais les commentaires ne sont pas activés.

  5. @Marwa: Assurez-vous que votre thème ne contient pas un code parasite qui désactive les commentaires.

  6. Bonsoir,
    Je n’arrive pas à activer les commentaires dans mon thème wordpress.
    Je suis rentrée dans la racine comments.php et j’ai ça:

    			<?php
    				printf( _nx( 'One Comment', '%1$s Comments', get_comments_number(), 'comments title', 'athemes' ),
    					number_format_i18n( get_comments_number() ), '' . get_the_title() . '' );
    			?>
    			
    		
    
    		
    			 'athemes_comment', 'avatar_size' => 50 ) );
    			?>
    		
    
    		 1 && get_option( 'page_comments' ) ) : // are there comments to navigate through ?>
    		
    			
    	
    
    
    	 '' ) ); ?>
    
    
    

    Est-ce que vous pouvez m’aider svp?

    Merci beaucoup.

    Cordialement,

    Audrey

  7. @Drey : J’ai le genre de question à poser au support de l’auteur de votre thème ça :)

  8. Bonjour,

    pet-on exclure la possibilité aux abonnés de pourvoir poster un commentaire?
    Je voudrais que seulement les administrateurs et un certain rôle puissent poster des commentaire.
    Merci

  9. Bonjour
    Depuis quelques temps lorsque je crée une page, la fonction “Poster un commentaire” n’apparait plus. Elle est toujours là sur les articles mais pas sur les pages. Y a t il un traitement différent entre article et page ? Dans le menu Réglages>Discussion, l’autorisation à laisser des commentaires est bien cochée…
    Et étant en peu nulle en informatique, je n’ai rien touché depuis que je manipule mon blog. Ou alors à mon insu !!
    Merci de votre aide !
    Céline

  10. Bonjour,
    J’ai un petit soucis avec mes commentaires, j’ai changé mon thème et depuis, le nom des personnes qui me laissent un commentaire n’apparaît plus à côté du gravatar. J’ai beau chercher, je ne trouve pas la solution. Auriez-vous une petite astuce ? Merci d’avance.