De façon temporaire ou définitive, il existe de nombreuses raisons de vouloir fermer les commentaires sur l'ensemble d'un site WordPress. Ce tutoriel vous apprendra comment les désactiver pour un ou plusieurs types de contenu et ce, sans recours à un plugin.

Dans un mu-plugins ou le fichier functions.php de votre thème, collez les lignes suivantes :

add_filter('comments_open', 'wpc_comments_closed', 10, 2);

function wpc_comments_closed( $open, $post_id ) {
$post = get_post( $post_id );
if ('post' == $post->post_type)
$open = false;
return $open;
}

A la ligne 5, spécifiez le type de contenu pour lequel vous souhaitez désactiver les commentaires : post pour les articles, page pour les pages classiques ou un custom post type.

Sauvegardez le tout puis vérifiez que les commentaires sont désormais clos.

Si vous préférez les désactiver sur l’ensemble de votre site, alors supprimez la ligne avec la condition signalée par le if.

31 commentaires
    1. Aurélien Denis auteur de l’article

      Comment ça ? Je ne comprends pas mon erreur cher collègue ? Tu me fais un pastebin stp car ici le code est fonctionnel.

  1. Cristophe

    Ça désactive les commentaires mais est-ce que ça ôte également de l’affichage les mentions « Ajouter un commentaire » ou « Aucun commentaire », voire ?

    1. Aurélien Denis auteur de l’article

      Non pour ce faire, il faut modifier le thème via un child theme par exemple.

      1. Marinette Jullien

        Bonjour, existe-t-il un tuto pour cela ?
        –> désactiver les commentaires + ôter de l’affichage tout ce qui a rapport aux commentaires ?
        Merci beaucoup pour ce travail en tout cas !

        1. Aurélien Denis auteur de l’article

          Hum pour cela il faudrait éditer le thème… donc pas vraiment de solution universelle.

  2. MetalZineur

    Belle démonstration mais il aurait été cool d’expliquer les raisons du « pourquoi » de cette désactivation.

    1. Aurélien Denis auteur de l’article

      Il existe des tas de raisons comme le besoin de bloquer un bad buzz.

  3. merci pour cette astuce, en effet même si wordpress est à la base un moteur de blog, cela ne l’empèche pas d’etre un bon CMS qui peut etre utilisé dans des sites qui ne demandent pas d’activer les commentaires

  4. Bonjour et merci pour vos tutoriels qui aident bien
    Voilà, moi j’ai un souci sur l’affichage des commentaires de quelques articles de mon blog. J’avais laissé la possibilité de laisser des commentaires ouverte et j’ai eu plein de commentaires envoyés par des robots (presque 6000 au total). J’ai évidemment décoché l’option mais les commentaires anciens sont toujours affichés et je ne trouve pas comment les supprimer de l’affichage.
    Est-ce que vous auriez une idée ?
    merci pour votre aide

    1. Aurélien Denis auteur de l’article

      Avez-vous installé le plugin Akismet (gratuit pour une utilisation non commerciale) ? Ou tout autre module anti-spam ?

  5. Oui j’ai installé jetpack mais je pense que je n’avais pas activé Askimet. Je viens de le faire mais cela ne supprime pas les commentaires existants. Pour les supprimer je passe par Commentaires / approuvés / j’en sélectionne (max 100 sinon ça bug), je supprime ou mets en indésirable…. Allez plus que 4142…
    Je suis preneuse d’une manip plus rapide (d’autant que j’ai beaucoup d’erreurs 404. Merci encore pour votre aide

    1. Aurélien Denis auteur de l’article

      Une fois Akismet activé, vous disposez d’une option Vérifier les commentaires indésirables dans l’onglet Commentaires de votre administration WordPress.

  6. Merci pour l’astuce bien pratique !
    C’est étonnant qu’une « option » de la sorte n’existe pas en natif sur WordPress…

    1. Aurélien Denis auteur de l’article

      Une telle option existe au niveau global mais uniquement pour les nouveaux contenus à paraître. Sinon, il faut éditer en masse… pas très pratique !

      1. C’est une fois que l’on a décoché la case « autorisé les commentaires » dans le panneau discussion lors de la rédaction d’un nouvel article ?
        Ou il y a une option que j’aurais loupé quelque part… ?

      2. benoitperche

        Bonjour,
        Si on vise les articles uniquement on peut également ruser et se rendre dans le menu Réglages => Discussion et cocher la case « Fermer automatiquement les commentaires pour les articles vieux de plus de » en ayant pris soin préalablement de noter 1 jour dans le délai.

  7. Teddy Von Dutch Mazambi

    Il ne faut pas être du genre ingrat. Je remercie quand j’ai trouvé une solution. Merci à l’auteur

  8. Génial, merci pour ce code ! Pour moi ça désactive les fonctions et les intitulés « laisser un commentaire », c’est parfait, encore merci

  9. Hello !
    J’ ai copié ces lignes dans le fichier, mais j’ai eu un message d’erreur.
    Je les ai donc enlevées mais toujours un message d’erreur… Je n’arrive plus à accéder à l’interface de mon wordpress !

    Voici la petite phrase bien sympathique :

    Fatal error: Cannot redeclare url_is_accessable_via_ssl() (previously declared in /home/fleurdefp/www/wp-includes/functions.php:3013) in /home/fleurdefp/www/wp-includes/deprecated.php on line 3493

    Que dois-je faire ?
    Merci

    1. Aurélien Denis auteur de l’article

      Il doit manquer une accolade ou une virgule quelque part. L’erreur n’a rien à voir avec le tutoriel. Avez-vous modifié correctement le fichier avec un éditeur de code via un client FTP ?

  10. bonjour
    j’ai une erreur qui me dit « Fatal error: Call to undefined function add_filter() in …/wp-includes/functions.php on line 27
    la ligne 27 étant « add_filter(‘comments_open’, ‘wpc_comments_closed’, 10, 2); »
    avez-vous une idée ?
    merci d’avance

    1. Aurélien Denis auteur de l’article

      La fonction wpc_comments_closed est absente visiblement. Avez-vous copié l’intégralité du code ? Merci d’utiliser un service comme pastebin pour partager votre code.

  11. Mon erreur : Je mettais le bout de code dans le fichier functions.php ce qui faisait planter le site avec le message d’erreur cité plus haut.

    En fait il fallais le mettre dans le fichier functions.wp-scripts.php !!! et tout fonctionne niquel

    C’était assez bizarre que ça ne fonctionne pas car ce n’était pas la première fois que je venais sur votre site piquer ce bout de code qui avait toujours bien fonctionné… Visiblement avant il n’y avait qu’un seul fichier functions.php mais ce n’est plus le cas aujourd’hui…

Laisser un commentaire