Désactiver les commentaires WordPress sans plugin
Pour désactiver les commentaires WordPress sans plugin, allez dans Réglages, Discussion, décochez « Autoriser les visiteurs à publier des commentaires sur les nouveaux articles », puis fermez aussi les commentaires des contenus déjà publiés dans l’édition rapide. Pour une règle durable, ajoutez un filtre PHP dans un mu-plugin ou dans le fichier functions.php d’un thème enfant. Cette méthode ne supprime pas les commentaires existants, elle empêche les nouveaux envois et masque les formulaires selon le réglage choisi.
Cette distinction est importante. WordPress sépare l’autorisation globale, l’état de chaque article et l’affichage du formulaire par le thème. Une case décochée ne ferme donc pas forcément les discussions anciennes. Voici la procédure complète, sans extension, avec une solution réversible et des tests à effectuer avant la mise en ligne.
Pourquoi désactiver les commentaires WordPress sans plugin
Les commentaires peuvent apporter des échanges utiles, mais ils ajoutent aussi une surface de modération. Un formulaire public reçoit des liens indésirables, des tentatives d’injection, des messages automatisés et parfois des demandes de support qui devraient passer par un canal privé. Sur un site vitrine, un blog technique ou une documentation, la discussion peut être secondaire alors que chaque nouveau message doit être contrôlé.
Désactiver les commentaires ne remplace pas la sécurisation générale de WordPress. Il faut conserver les mises à jour, limiter les comptes administrateurs et surveiller les journaux. Cette opération réduit seulement un flux entrant. Elle ne bloque pas l’API REST, les formulaires d’un constructeur de page ni les commentaires déjà enregistrés dans la base de données.
Avant de modifier le site, exportez une sauvegarde de la base. La fermeture est réversible, tandis qu’une suppression massive des commentaires est une opération différente et potentiellement définitive.
Désactiver les nouveaux commentaires dans les réglages WordPress
La méthode native convient à la majorité des sites. Connectez vous à l’administration, ouvrez Réglages, Discussion, puis désactivez l’option qui autorise les visiteurs à publier des commentaires sur les nouveaux articles. Enregistrez les modifications. Ce réglage s’applique aux futurs contenus, il ne change pas automatiquement l’état des articles déjà publiés.
Dans le même écran, vous pouvez désactiver les notifications de commentaires et les rétroliens si vous ne les utilisez pas. Évitez de modifier les options de validation ou d’inscription au hasard. Elles contrôlent la modération, pas la fermeture complète du formulaire. La documentation officielle de l’écran Discussion de WordPress détaille le rôle de chaque case.
# Vérification conceptuelle : le réglage concerne les nouveaux articles
# Les anciens articles gardent leur propre commentaire_status
# Il faut donc traiter aussi les contenus existants
Pour créer un nouvel article fermé par défaut, ce réglage est généralement suffisant. Pour un catalogue ancien, une migration ou un site qui doit interdire toute nouvelle discussion, poursuivez avec la fermeture des articles existants.
Fermer les commentaires des articles déjà publiés
Dans Articles, ouvrez la liste des contenus. Cochez les articles concernés, choisissez Modifier dans les actions groupées, puis sélectionnez « Ne pas autoriser » dans la zone des commentaires. WordPress applique alors le statut fermé aux contenus choisis. Sur un petit site, l’édition rapide permet le même changement article par article.
Cette approche est sûre parce qu’elle utilise l’interface native et ne touche pas aux messages déjà stockés. Elle devient toutefois fastidieuse sur plusieurs centaines d’articles. Dans ce cas, WP CLI permet une opération contrôlée après une sauvegarde. La commande wp comment sert à gérer les commentaires existants, tandis que la commande de mise à jour des posts agit sur le statut de discussion.
# Lister les articles avant modification
wp post list --post_type=post --post_status=publish --format=ids
# Fermer les discussions des articles publiés
wp post list --post_type=post --post_status=publish --format=ids | nxargs -n 1 wp post update --comment_status=closed --ping_status=closed
Testez d’abord sur un seul identifiant. La fermeture des commentaires et celle des pings sont deux champs distincts. Si les rétroliens ne vous servent pas, fermez les deux. N’exécutez jamais une commande groupée sans vérifier le type de contenu et l’environnement visé.
Ajouter une règle PHP dans un thème enfant
Pour appliquer la fermeture automatiquement, utilisez un thème enfant ou un mu-plugin. Le thème enfant est préférable à une modification du thème parent, car une mise à jour du parent écrase le fichier. Ajoutez ce code dans functions.php, puis testez la page d’un article et l’écran d’administration.
<?php
// Ferme les commentaires et les rétroliens sur tout nouveau contenu.
add_filter('comments_open', '__return_false', 20);
add_filter('pings_open', '__return_false', 20);
// Masque le compteur de commentaires dans certains thèmes.
add_filter('comments_number', '__return_zero', 20);
Les filtres comments_open et pings_open influencent l’état présenté par WordPress, mais ils ne suppriment pas les données existantes. Le filtre du compteur ne retire pas le bloc HTML du thème. Certains thèmes affichent encore un titre ou un lien vide. Il faut donc vérifier le rendu réel et, si nécessaire, désactiver la zone dans les options du thème.
Si vous utilisez un thème enfant, gardez une copie du fichier avant édition. Une erreur PHP peut rendre l’administration inaccessible. Dans ce cas, retirez la dernière modification via FTP ou le gestionnaire de fichiers, puis consultez les logs PHP.
La méthode recommandée avec un mu-plugin
Un mu-plugin, ou extension obligatoire, est un petit fichier chargé automatiquement par WordPress. Il est indépendant du thème actif et reste présent lors d’un changement de design. Créez le dossier wp-content/mu-plugins s’il n’existe pas, puis créez fermer-commentaires.php.
<?php
/**
* Plugin Name: Fermer les commentaires sans extension externe
*/
add_filter('comments_open', '__return_false', 20);
add_filter('pings_open', '__return_false', 20);
Le fichier doit contenir l’en tête PHP et les deux filtres. Il n’a pas besoin d’être activé depuis Extensions. Pour revenir en arrière, renommez le fichier avec une extension différente ou déplacez le fichier hors de mu-plugins. Cette réversibilité est un avantage important par rapport à une requête directe dans la base.
Vous pouvez limiter la règle aux articles et pages, au lieu de fermer les commentaires sur tous les types de contenus. Le test du type de publication évite de perturber un type personnalisé qui utiliserait les commentaires comme fonctionnalité métier.
<?php
function wpalab_fermer_discussion($open, $post_id) {
$types = ['post', 'page'];
return in_array(get_post_type($post_id), $types, true) ? false : $open;
}
add_filter('comments_open', 'wpalab_fermer_discussion', 20, 2);
Masquer le formulaire sans supprimer les commentaires
Fermer la discussion et masquer le formulaire sont deux actions différentes. Le statut fermé empêche normalement les nouveaux commentaires, mais un thème peut continuer à afficher une phrase indiquant que les commentaires sont clos. Si vous voulez retirer toute la zone visuelle, utilisez d’abord les options du thème. Le CSS ne doit être qu’un dernier ajustement, car une classe peut changer après une mise à jour.
Pour un thème classique, le fichier single.php contient souvent l’appel à comments_template(). Ne le supprimez pas directement dans le thème parent. Dans un thème enfant, une surcharge contrôlée est possible, mais elle demande une vérification mobile et un test avec un article qui conserve des commentaires historiques.
Les blocs de commentaires de l’éditeur de site suivent une logique différente. Vérifiez le modèle Article dans Apparence, Éditeur, Modèles. Une fermeture PHP peut bloquer l’envoi tout en laissant le bloc visible, tandis qu’une suppression du bloc règle l’affichage. Pour comprendre les effets côté base, consultez la référence WordPress sur update_option et les fonctions de discussion.
Bloquer les commentaires par code sans casser le site
Certains administrateurs veulent aussi empêcher les insertions provenant d’un formulaire personnalisé. Le filtre preprocess_comment peut retourner une erreur avant l’enregistrement, mais il faut afficher un message compréhensible et ne pas bloquer un usage légitime sans le savoir. La référence preprocess_comment documente le point d’entrée.
<?php
function wpalab_refuser_commentaires($commentdata) {
wp_die(
'Les commentaires sont désactivés sur ce site.',
'Commentaires fermés',
['response' => 403]
);
}
add_filter('preprocess_comment', 'wpalab_refuser_commentaires');
Cette variante est plus radicale. Elle peut aussi intercepter des commentaires envoyés par une intégration ou une API que vous souhaitiez conserver. Dans la plupart des cas, les filtres d’état suffisent. N’ajoutez pas une règle serveur ou une suppression de table pour résoudre un problème de formulaire mal configuré.
Vérifier la fermeture et préserver les données
Après chaque changement, ouvrez une fenêtre privée et testez un article ancien, un article récent et une page. Vérifiez que le formulaire n’accepte plus de message, que le bouton de réponse n’est pas accessible et que l’administration ne renvoie pas d’erreur. Inspectez aussi le code HTML rendu si le thème affiche encore un bloc vide.
Contrôlez ensuite les commentaires déjà présents. Ils doivent rester consultables dans l’administration, sauf si vous avez demandé explicitement leur suppression. Pour une suppression légitime, exportez d’abord la base et traitez les données par lots. La fonction native wp_insert_comment rappelle que les commentaires sont des objets WordPress structurés, pas du simple texte à effacer à l’aveugle.
# Vérifications HTTP basiques
curl -I https://exemple.fr/article-test/
curl -s https://exemple.fr/article-test/ | grep -iE 'comment|reply' | head
# Vérifier que le mu-plugin est bien présent
ls -l wp-content/mu-plugins/fermer-commentaires.php
Si vous avez un cache serveur, purgez le cache après la modification. Pour une méthode sans extension, consultez notre guide pour vider le cache WordPress sans plugin. Le navigateur peut également conserver une ancienne page, d’où l’intérêt du test en navigation privée.
Pour compléter cette maintenance, voyez aussi notre méthode pour changer l’URL de wp-admin sans plugin et le guide pour dupliquer une page ou un article WordPress sans plugin. Ces opérations restent indépendantes de la fermeture des commentaires, mais elles s’inscrivent dans la même logique de gestion native du site.
Questions fréquentes sur les commentaires WordPress
Comment désactiver les commentaires WordPress sans plugin sur tous les articles ?
Fermez les discussions depuis l’action groupée des Articles, ou utilisez un mu-plugin avec les filtres comments_open et pings_open. Faites une sauvegarde avant toute opération massive et testez sur un article.
La désactivation supprime-t-elle les anciens commentaires ?
Non. Elle empêche principalement les nouvelles publications et peut masquer le formulaire. Les anciens commentaires restent dans la base et dans l’administration tant qu’ils ne sont pas supprimés séparément.
Comment fermer les commentaires sur les nouveaux articles uniquement ?
Allez dans Réglages, Discussion, puis décochez l’autorisation de publier des commentaires sur les nouveaux articles. Les articles existants conservent leur propre état, que vous pouvez modifier avec l’édition rapide.
Un mu-plugin est-il préférable à functions.php ?
Oui si la règle doit rester active indépendamment du thème. Un mu-plugin se charge automatiquement et ne disparaît pas lors d’un changement de thème, mais il faut conserver une copie du fichier pour pouvoir le désactiver rapidement.
Peut-on réactiver les commentaires plus tard ?
Oui. Réactivez l’option Discussion, retirez les filtres du thème enfant ou renommez le mu-plugin. Pour les anciens articles, remettez le statut des commentaires sur Autoriser dans l’édition groupée.
Sources utiles : documentation Discussion, filtre comments_open, filtre pings_open, WP CLI post update, preprocess_comment, mu-plugins WordPress.
Commentaires (0)
Laisser un commentaire
Les commentaires sont modérés. Questions WordPress, cybersécurité ou dev web bienvenues.