On a parfois besoin de déplacer un commentaire sur WordPress (ou plusieurs) entre deux articles.
- Un visiteur a posté son commentaire au mauvais endroit.
- Vous divisez un article en deux (ou fusionnez deux articles) et vous souhaitez séparer/réunir les commentaires.
- Vous déplacez des articles sur un autre blog et vous voulez déplacer les commentaires associés.
Dans cet article, je vais vous apprendre à déplacer un commentaire sur WordPress. Il s'agit d'un tutoriel qui exige une bonne aisance technique et pour le suivre, mieux vaut avoir quelques connaissances de base dans la gestion d'une base de données.
Je vous conseille quoi qu'il arrive de sauvegarder votre base de données avant d'y faire des manipulations, afin d'éviter toute conséquence sérieuse sur votre blog en cas d'erreur.
Avant de vous lancer dans une procédure riche en manipulation, vous pouvez tenter de déplacer vos commentaires à l'aide du plugin WordPress Copy or Move Comments. Si celui-ci ne fonctionne pas bien sur votre blog, je vous propose une méthodologie un peu plus technique mais efficace ci-après !
Identifier les commentaires à déplacer
Pour commencer, vous allez devoir noter sur quel article se trouvent les commentaires à transférer… et surtout, quel est l'identifiant de l'article en question (ou des articles en question s'il y en a plusieurs).
Récupérer l'identifiant de l'article concerné
Pour connaître l'identifiant de l'article, il suffit d'aller dans la rubrique "Articles" de votre administration WordPress et de survoler le titre de votre article avec la souris. En bas de votre navigateur, vous verrez apparaître l'adresse de l'article : elle comporte un nombre sous la forme post.php?post=XXXX, le XXXX correspondant à l'identifiant. Par exemple, l'identifiant de mon article sur le Jardin Exotique d'Eze Village est ici 1341.
Si vous avez beaucoup d'articles concernés par un déplacement de commentaires, vous pouvez tout à fait créer un tableau Excel avec le nom de chaque article, son identifiant, le nombre de commentaires qu'il comporte et l'identifiant du nouvel article qui devra afficher les commentaires après déplacement. Ça vous fera gagner beaucoup de temps.
Une fois que vous avez récupéré l'identifiant (1341 dans mon exemple), vous pouvez passer à l'étape suivante.
Afficher les commentaires à déplacer
Connectez-vous à la base de données du blog sur lequel se trouvent les commentaires que vous souhaitez déplacer. Les commentaires sont stockés dans une table intitulée wp_comments. Le préfixe peut être différent si vous l'avez personnalisé lors de l'installation de WordPress. Nous devons retrouver les commentaires à transférer, ceux de l'article 1341 dans mon exemple.
Dans la table wp_comments, il existe une colonne intitulée comment_post_ID, qui permet à chaque commentaire d'être rattaché à l'identifiant d'un article précis (et donc de s'afficher sur cet article). Autrement dit, les commentaires postés sur mon article concernant Eze Village sont tous rattachés au comment_post_ID 1341.
Nous allons donc afficher uniquement les commentaires correspondant à ce comment_post_ID. Pour ce faire, allez dans le menu SQL en haut de la page et tapez l'instruction suivante :
SELECT * FROM `wp_comments` WHERE comment_post_ID LIKE 1341
Bien sûr, pensez à remplacer l'identifiant 1341 par l'identifiant de votre propre article. Si vous avez modifié le préfixe de vos tables, remplacez wp
par votre préfixe. Cliquez ensuite sur le bouton "Exécuter".
Vous obtenez la liste des commentaires associés à l'article qui vous intéresse.
Ensuite, il y a deux options :
- Soit vous avez peu de commentaires à déplacer, auquel cas vous pouvez suivre la partie de mon tuto intitulée "Option #1".
- Soit vous avez un grand nombre de commentaires à déplacer, auquel cas il faut lire la partie intitulée "Option #2".
Option #1 - Déplacer un petit nombre de commentaires
Si vous n'avez que quelques commentaires à déplacer, vous pouvez le faire à la main. Cliquez simplement sur l'identifiant de l'article dans la colonne comment_post_ID. Il va alors s'afficher sous forme de champ modifiable, comme ceci :
Vous avez juste à indiquer l'identifiant de l'article sur lequel vous devez déplacer le commentaire, puis cliquer sur "Entrée" pour valider. En faisant ça pour chaque commentaire à déplacer, vous modifiez en quelque sorte son "affectation". Le commentaire n'est plus affecté à l'article n°1351 mais au nouvel article que vous avez choisi.
Option #2 - Déplacer un grand nombre de commentaires
Si vous avez beaucoup de commentaires à déplacer, tout faire à la main commentaire par commentaire se révélerait très long et fastidieux. On va donc avoir recours à une autre méthode.
Sauvegarder les commentaires existants sur l'article
Une fois que vous avez affiché la liste des commentaires à déplacer grâce à la première étape du tutoriel, cochez les commentaires que vous souhaitez transférer ou la case "Tout cocher" pour tous les sélectionner (cf flèches ci-dessous). Cliquez ensuite sur le bouton "Exporter". Laissez les options par défaut et cliquez sur "Exécuter" pour télécharger un fichier contenant les commentaires.
Préparer le déplacement d'un commentaire
Vous allez devoir modifier le fichier que vous avez téléchargé pour pouvoir transférer les commentaires au bon endroit.
Pour commencer et dans un souci de lisibilité, nous allons seulement garder la partie du fichier qui commence par INSERT INTO. Ça se présente comme ceci :
Il y a plusieurs modifications à apporter à ce fichier selon votre situation.
Le préfixe de table
Si vous déplacez les commentaires sur un autre blog qui n'utilise pas le même préfixe de table, vous allez commencer par modifier le fichier en indiquant le bon préfixe. À la place de wp_comments, indiquez le bon préfixe, par exemple s8_comments.
Le numéro du commentaire
De la même manière que les articles possèdent un identifiant unique, chaque commentaire est lui aussi identifié par un nombre unique, qui figure au début de la ligne correspondant à chaque commentaire. Dans mon exemple, on a ainsi les commentaires n°15618 et n°15620. Si vous déplacez les commentaires sur un autre blog, il se peut que ce chiffre ne soit pas disponible et qu'il soit déjà utilisé par un commentaire existant.
Dans ce cas, connectez-vous à la base de données du nouveau blog où vous voulez transférer les commentaires et allez voir dans la table wp_comments à quel numéro les commentaires en sont rendus. Il faut simplement cliquer sur le titre de la colonne intitulé "comment_ID" pour classer des commentaires en fonction de leur identifiant :
Cliquez deux fois pour les classer du plus élevé au plus faible. Par exemple, ici, le dernier commentaire en date porte le numéro 7913. Ça signifie que si je veux insérer sur ce blog de nouveaux commentaires, je peux leur donner l'identifiant 7914 et les suivants.
Dans notre fichier, nous allons donc renuméroter les commentaires en fonction de cette information :
L'identifiant de l'article
Jusqu'à présent, le commentaire était rattaché à un article précis, l'article 1341 dans mon exemple. Si je veux les transférer sur un autre article, il aura un identifiant différent. Il faut donc remplacer le chiffre 1341 par le nouvel identifiant, celui de l'article où vous allez copier les commentaires.
La logique des questions et des réponses aux commentaires
À la fin de chaque paragraphe correspondant à un commentaire, vous avez deux chiffres.
- Le premier indique si le commentaire est une réponse à un autre commentaire ou pas - S'il s'agit d'un simple commentaire, le chiffre 0 est affiché. S'il s'agit d'une réponse à un autre commentaire, c'est l'identifiant de ce commentaire qui est affiché.
- Le deuxième chiffre correspond à l'identifiant de la personne qui poste - Si c'est un invité (un simple visiteur) du blog, ce chiffre est "0". Si c'est un membre inscrit, un administrateur, ce sera un autre chiffre.
Dans mon exemple, si vous regardez le commentaire de "Fanfan", vous voyez qu'il se termine par les chiffres 0, 0 avant la parenthèse. Fanfan est une "simple visiteuse" et son commentaire ne répond à aucun autre commentaire. A l'inverse, si vous regardez mon commentaire, il se termine par les chiffres 15618, 4. Autrement dit, il répond au commentaire n°15618 (celui de Fanfan)... et je porte l'identifiant 4 sur WordPress.
Que faut-il modifier ici ?
- Si vous avez renuméroté les commentaires, il faut en tenir compte : dans mon exemple, le commentaire de Fanfan, le n°15618, est devenu le commentaire n°7914. Il faut donc que je modifie la fin de la ligne qui me concerne... pour indiquer que ma réponse s'adresse au commentaire n°7914. Comme ceci :
- Si vous déplacer un commentaire d'un blog vers un autre, l'identifiant de la personne qui répond peut changer, il faut aussi penser à le modifier si nécessaire. Par exemple, je peux avoir l'identifiant n°4 sur un blog parce qu'il y a 3 autres comptes... et l'identifiant n°1 sur un autre blog car je n'ai créé qu'un seul compte dessus.
Si vous le souhaitez, vous pouvez aussi en profiter pour modifier votre nom tel qu'il apparaît en signature du commentaire. Dans mon exemple, je m'appelle "Marlène | No Tuxedo" quand je réponds à un commentaire... mais si je transfère les commentaires sur un autre blog, j'utiliserai le nom de l'autre blog.
À ce stade, notre fichier est fin prêt. Les commentaires vont pouvoir être postés dans la bonne table, sur le bon article, avec la même logique de questions et de réponses que dans le post d'origine et en identifiant correctement les auteurs comme invités ou comme membres du site. Vous pouvez donc enregistrer le fichier !
Déplacer le commentaire vers sa nouvelle adresse
Ensuite, connectez-vous à la base de données du blog où vous devez transférer les commentaires et importez ce fichier.
Vous pouvez le faire soit par le biais du menu Importer en haut de page soit en copiant-collant le contenu du fichier via le menu SQL en haut de page. Si le transfert se passe bien, vous verrez un message sur fond vert tandis que s'il se passe mal, vous verrez un message sur fond rouge. Ce message vous expliquera la cause de l'erreur. Il peut s'agir d'une ponctuation manquante, d'une erreur sur un identifiant, etc.
Normalement, en allant sur l'article de destination, vous devriez maintenant voir apparaître les commentaires que vous avez transférés. Il nous reste cependant une dernière erreur à corriger. WordPress affiche toujours un total de 0 commentaire sur l'article bien que le transfert ait été réalisé correctement.
Pour que l'article affiche le bon nombre de commentaires, allez dans la table wp_posts du blog où vous avez transféré les commentaires. Dans le menu SQL en haut de page, entrez la requête ci-dessous. Remplacez le préfixe "wp_" par le vôtre si vous l'avez modifié et remplacez l'identifiant (ici 58) par l'identifiant de l'article où vous avez transféré les commentaires.
SELECT * FROM `wp_posts` WHERE `ID` LIKE 58
Cette requête va vous afficher l'article où vous avez transféré les commentaires. Repérez la colonne située la plus à droite, qui s'intitule comment_count. Actuellement, elle affiche le chiffre 0 car l'article ne sait pas combien il a de commentaires. Double-cliquez sur ce chiffre et remplacez-le par le nombre de commentaires exact (2 dans mon exemple) puis cliquez en dehors de la case pour sauvegarder l'information.
Si vous revenez maintenant sur votre article et que vous actualisez la page, vous allez voir que le compteur s'est mis à jour avec le nombre exact de commentaires.
Voilà pour ce tutoriel. Comment souvent, c'est la "première fois" qui va vous demander le plus d'énergie car il faut mémoriser les étapes et veiller à ne pas faire d'erreur. Une fois que vous l'aurez fait deux ou trois fois, ça ne vous semblera plus si compliqué !
La plupart du temps, la première méthode "à la main" suffit pour la gestion courante de son blog, quand on fusionne deux articles par exemple et que l'on veut transférer les commentaires de l'un à l'autre. La deuxième méthode, plus complexe, est surtout utile quand on déplace un volume important d'articles et de commentaires entre deux bases de données et que l'on veut bénéficier d'une gestion très fine des choses.
En effet, il existe sur WordPress un outil d'export performant (via le menu Outils > Exporter), qui peut vous permettre de déplacer des articles avec leurs commentaires, mais il n'est pas forcément adapté quand on a besoin d'un contrôle très fin sur ce qu'on déplace (ou pas).
Bonjour Marlène,
grâce à toi j’avais trouvé une solution pour faire un déplacement d’un grand nombre de commentaires d’un article vers une nouvelle page. Mais malgré plusieurs lectures et essais à partir de ton article qui était pourtant celui qui m’avait permis de trouver le code, je n’y parviens plus. J’ai perdu ce code dans un formatage. Rien à faire pour le retrouver. Aurais-tu une idée de ce que je peux taper dans la commande ? Il y avait les deux articles à mentionner, l’ancien et le nouveau. Or dans tes propositions, il n’y en a qu’un. Et chaque essai aboutit à une erreur. Merci pour ton aide.
Bonjour, pour ma part quand je veux déplacer tous les commentaires d’un article vers un autre, j’écris :
UPDATE wp_comments SET comment_post_ID=IDdedestination WHERE comment_post_ID=IDdorigine
En remplaçant « IDdedestination » par l’identifiant de l’article vers lequel on déplace et « IDdorigine » par l’identifiant de l’article depuis lequel on déplace les commentaires. Et en modifiant le préfixe de table (wp_) si nécessaire, s’il a été personnalisé.
Si le but est de ne pas déplacer tous les commentaires, la requête est différente bien sûr en fonction des critères de choix des commentaires à déplacer.
Bonjour Marlène,
je viens d’essayer, mais à chaque fois j’ai le même message d’erreur
Pourtant les numéros des articles sont les bons
Erreur
Requête SQL :
UPDATE wp_comments SET comment_post_ID=329504 WHERE comment_post_ID=262224
MySQL a répondu: Documentation
#1146 – La table ‘voyages.wp_comments’ n’existe pas
Je ne sais pas pourquoi ça ne marche plus, le code que j’utilisais et que j’ai perdu ne déclenchaient aucune erreur. Je ne comprends pas ce qui dysfonctionne? Merci pour ton aide.
Désolée de t’avoir dérangé avant d’y penser, je l’ai fait alors que j’avais déjà envoyé le message : j’avais oublié de vérifier l’intitulé de mes tables, donc j’ai juste copié le message comme donné sans modifier avec le nom de mes tables. Merci pour ton aide. Ca m’est d’un grand secours vu ma refonte, j’ai des tas de commentaires à déplacer. Ca ne serait pas jouable manuellement.
Je ne sais pas si ton message veut dire que tu as trouvé la solution… mais ta table n’est-elle pas juste « voyages_comments » et pas « voyages.wp_comments » ? Car d’après le message d’erreur, le nom de table n’est pas bon.
Bravo et merci de votre pédagogie minutieuse…
A vrai dire (il y a quelques années) j’avais téléchargé un petit plugin qui faisait cela d’un clic et c’était bien pratique. J’ai cherché à le télécharger (je ne l’ai plus), je me souviens qu’il existe mais ne l’ai pas retrouvé…
Vous ou vos correspondants ne le connaitraient-ils pas par hasard ?
Merci.
Hello Renaud, je pense que ce plugin le fait.
Petit complément d’informations : tout fonctionne bien, en revanche le compteur de commentaires ne se met pas à jour. J’ai fait le transfert par exemple de 8 commentaires vers cet article qui en avait déjà 20 : https://lesgrossacs.com/myanmar-le-bilan-en-chiffres-et-en-lettres
J’ai bien 28 commentaires mais le compteur est resté à 20.
Hello, si ça ne se met pas à jour il faut le changer manuellement dans la table wp_posts : on commence par trouver le bon post en entrant cette requête :
SELECT * FROM `wp_posts` WHERE `ID` = XXX
XXX étant le numéro du post sur lequel tu as déplacé les commentaires. Ça t’affiche une seule ligne. Dans la dernière colonne, intitulée « comment_count », tu as juste à indiquer le bon chiffre ;)
Mes excuses, je n’avais pas été voir dans le pavé de la solution 2 :) Parfait ça fonctionne ! Merci Marlène :)
Bonjour,
Super tuto mais le nombre de commentaires dans le back reste à zéro alors qu’il est bon sur la page en question ?
A quel endroit du back ? Car quand on modifie wp_posts, chez moi ça se met bien à jour partout (dans la colonne affichant le nombre de commentaires de l’article par exemple, dans le menu Commentaires)…
Merci pour la ligne de code. Jusqu’à aujourd’hui je naviguais dans les tables à la recherche du commentaire et de l’identifiant de l’article (j’avais pas vu qu’il apparaissait au survol). Même si je déplace rarement les commentaires, ça reste quelque chose d’utile à savoir.
Je le fais assez rarement aussi… et c’est pour ça que j’en ai profité pour créer un tuto car le jour où on en a besoin, ça évite de perdre du temps ;) En fait, je me rends compte que l’usage le plus fréquent que je fais de cette fonctionnalité, c’est quand je mets à jour intégralement un article : il m’arrive de rassembler deux articles en un seul et je « mutualise » les commentaires par la même occasion.
Faudrait que je me penche à ça, de temps en temps il m’arrive de réécrire des article donc je perds les anciens commentaires, mais ça me parait un peu compliqué pour moi.
Déjà en voulant mettre analytics moi meme j’ai explosé mon design de blog… alors là j’ai trop peur de faire une boulette !
Hello, en principe quand tu réécris un article tu ne devrais pas perdre les anciens commentaires (à moins de les supprimer manuellement), sauf si tu effectues ta réécriture dans un nouvel article. Auquel cas, c’est dommage car idéalement, il faut garder la même URL que l’ancienne version de l’article pour le référencement : ça te permet de conserver le trafic, les liens acquis par le « vieil article » même lorsqu’il est réécrit.
Par exemple, j’ai récemment refait entièrement cet article sur Instagram, j’ai changé le contenu de A à Z mais les anciens commentaires sont restés à la même place… et si quelqu’un avait partagé le lien de l’ancien article, quand on clique dessus on tombe sur un contenu à jour :)
Ah mais j’y penserais la prochaine fois !
C’est vrai que je devrais utiliser les anciens article directement pour les rééditer. Mais parfois, je trouve que mon SEO est tout pourri, donc je préfère recommencer à neuf.
Mais ça sera une erreur pour moi à ne plus commettre !
En fait, on ne réalise pas parfois qu’un article reçoit encore des liens… et que même s’il a peu de trafic, ça joue sur le site.