Désactiver les commentaires sur les pages / articles de WordPress par défaut

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. 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 ?

  2. topweb

    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

  3. Caroline

    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

  4. Caroline

    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. max

        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.

  5. fotsirhc

    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

  6. Florence

    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 ?

  7. Fabien

    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

  8. Fabien

    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

Thèmes & Plugins
Premium By WP Channel

WP Alacarte propose des produits et services de qualité
made in France pour la plateforme WordPress.

Tout est prêt pour créer votre site à la carte !

  • Thèmes et extensions premium
  • Facilité d’utilisation garantie
  • Temps de chargement optimisé
  • Personnalisation avancée
Découvrir

Rejoignez la communauté WordPress !

Faites partie de l’aventure en devenant membre d’une association WordPress. Conférences, ateliers, BarCamp, WordCamp… Venez
partager votre passion pour WordPress !

Aurélien DENIS,
président des associations WordPress Francophone et WPMX