Skip to content

Tout pour WordPress, le développement web — et plus encore

🔍 Recherche-remplacement dans phpMyAdmin : remplacer texte et URL dans la base WordPress

🔍 Recherche-remplacement dans phpMyAdmin : remplacer texte et URL dans la base WordPress

💡 Aperçu rapide:

  • ce qu'est la recherche-remplacement dans phpMyAdmin et quand c'est nécessaire;
  • une requête SQL pas à pas pour remplacer du texte dans toute la base WordPress;
  • comment remplacer en masse d'anciennes URL par de nouvelles via phpMyAdmin;
  • un aperçu de deux extensions alternatives, Better Search Replace et Search & Replace.

Ce qu'est la recherche-remplacement dans phpMyAdmin et à quoi ça sert

Imaginez: vous avez changé de domaine, renommé la marque ou mis à jour la structure des permaliens. Quelque part dans les entrailles de la base de données WordPress subsistent des centaines d'anciennes mentions, dans les articles, les méta-champs, les réglages des thèmes. Ouvrir chaque enregistrement et corriger à la main? Sur un site de cinq pages, peut-être. Sur deux cents, c'est une journée perdue.

phpMyAdmin, c'est une interface web de gestion de MySQL, fournie avec cPanel sur pratiquement tous les hébergements. Grâce à lui, vous exécutez une requête SQL qui, en une passe, trouve et remplace la chaîne indiquée dans tous les enregistrements de la base. Aucune extension, aucun code superflu, seulement vous, le navigateur et la bonne requête.

Toutefois, la méthode a une nuance: une erreur de syntaxe peut toucher les mauvaises données. C'est précisément pourquoi nous décortiquerons les requêtes en détail, et à la fin nous montrerons deux extensions qui suppriment le risque manuel et offrent un aperçu avant le remplacement.

Comment trouver et remplacer du texte via phpMyAdmin

Le scénario le plus fréquent, remplacer un mot ou une phrase dans tous les articles à la fois. Par exemple, l'ancien nom d'une entreprise par le nouveau, un terme obsolète ou un email invalide. Pour cela, il faut une seule requête UPDATE dans phpMyAdmin.

Étape 1: accédez à phpMyAdmin via cPanel

Ouvrez le cPanel de votre hébergement, trouvez la section «Bases de données» et cliquez sur l'icône phpMyAdmin. Connectez-vous, en général le login et le mot de passe sont les mêmes que pour cPanel.

Étape 2: sélectionnez la base de données du site

Après la connexion, une liste de bases de données apparaît à gauche. Cliquez sur celle qui correspond à votre site WordPress. Si vous ne vous souvenez pas du nom, regardez dans le fichier wp-config.php: la ligne define('DB_NAME', 'имя_базы').

Étape 3: allez dans l'onglet SQL

Dans la barre d'outils du haut, cliquez sur le bouton SQL, une fenêtre de saisie de requête s'ouvrira.

Fenêtre de requête SQL dans l'interface de phpMyAdmin

Étape 4: saisissez la requête SQL de remplacement de texte

La syntaxe de base ressemble à ceci:

1UPDATE table_name SET field_name =
2REPLACE(field_name, 'ce_qu_on_cherche', 'par_quoi_on_remplace');

Pour remplacer du texte dans tous les articles WordPress, la requête sera la suivante:

1UPDATE wp_posts SET post_content =
2REPLACE(post_content, 'ancien texte', 'nouveau texte');

Analyse par parties: UPDATE wp_posts, on travaille avec la table des articles; SET post_content, on modifie le contenu du champ post_content; REPLACE(post_content, 'A', 'B'), la fonction cherche la sous-chaîne A et la remplace par B. Important: le préfixe des tables peut ne pas être wp_, vérifiez dans wp-config.php la valeur de $table_prefix.

⚠️ Avant l'exécution, faites impérativement une sauvegarde de la base de données. Dans cPanel, il y a pour cela une section Backup, ou utilisez une extension comme UpdraftPlus. Une requête SQL est irréversible, il n'y a pas de bouton «annuler».

Étape 5: exécutez la requête

Cliquez sur le bouton «Go» (ou «Exécuter») en bas à droite. phpMyAdmin exécutera la requête et affichera un message avec le nombre de lignes touchées, par exemple, «Lignes touchées: 47». Cela signifie que 47 enregistrements contenaient le texte recherché et ont été mis à jour.

Résultat de l'exécution d'une requête SQL dans phpMyAdmin

Voilà. Parcourez le site et vérifiez quelques pages, l'ancien texte doit être remplacé.

Comment remplacer une URL dans la base WordPress via phpMyAdmin

Le remplacement d'URL est plus complexe que celui de texte, car les adresses sont stockées non pas dans une seule table, mais dispersées dans plusieurs. Voici où chercher:

Liste des tables de la base de données WordPress dans phpMyAdmin
  • Articles et pages: le champ post_content dans la table wp_posts
  • Méta-champs (champs personnalisés): meta_value dans wp_postmeta
  • Réglages des thèmes et extensions: option_value dans wp_options
  • Commentaires: comment_content dans wp_comments
  • Menus (ancien gestionnaire de liens): link_url et link_image dans wp_links
  • Métadonnées des utilisateurs: meta_value dans wp_usermeta

Pour tout couvrir d'un coup, exécutez cet ensemble de requêtes (copiez-les une par une et cliquez sur Go après chacune):

1UPDATE wp_options SET option_value =
2REPLACE(option_value, 'http://old-domain.com', 'https://new-domain.com')
3WHERE option_name = 'home' OR option_name = 'siteurl';
4
5UPDATE wp_posts SET post_content =
6REPLACE(post_content, 'http://old-domain.com', 'https://new-domain.com');
7
8UPDATE wp_postmeta SET meta_value =
9REPLACE(meta_value, 'http://old-domain.com', 'https://new-domain.com');
10
11UPDATE wp_comments SET comment_content =
12REPLACE(comment_content, 'http://old-domain.com', 'https://new-domain.com');
13
14UPDATE wp_links SET link_url =
15REPLACE(link_url, 'http://old-domain.com', 'https://new-domain.com');
16
17UPDATE wp_usermeta SET meta_value =
18REPLACE(meta_value, 'http://old-domain.com', 'https://new-domain.com');

⚠️ Encore une fois: avant de lancer, une sauvegarde complète. Si le site utilise des données sérialisées (la plupart des thèmes et extensions, oui), un simple remplacement de texte peut casser la structure. Dans ce cas, mieux vaut utiliser les extensions de la section suivante, elles savent traiter la sérialisation correctement.

Extensions de recherche-remplacement pour WordPress

La méthode manuelle via phpMyAdmin est rapide, mais peu sûre pour les débutants. Les extensions règlent deux problèmes majeurs: elles offrent un aperçu avant le remplacement (dry run) et fonctionnent correctement avec les données sérialisées. Examinons deux options éprouvées.

Better Search Replace

Interface de l'extension Better Search Replace dans l'admin WordPress

Better Search Replace, l'extension gratuite la plus populaire pour cette tâche: plus d'un million d'installations actives. Développée sur la base du script open-source interconnect/it Search Replace DB, elle utilise les fonctions natives de WordPress, et non des requêtes SQL brutes.

Comment travailler avec l'extension:

  • Installez-la et activez-la depuis «Extensions → Ajouter».
  • Allez dans «Outils → Better Search Replace».
  • Dans le champ «Search for» saisissez le texte ou l'URL recherché.
  • Dans le champ «Replace with», ce par quoi on remplace.
  • Dans le bloc «Select tables» choisissez les tables voulues (ou toutes).
  • Activez «Run as dry run», c'est un essai à blanc sans remplacement réel. L'extension montrera combien de correspondances ont été trouvées et dans quelles tables.
Réglages de l'extension Better Search Replace avec l'option d'essai à blanc

Après vérification, désactivez «Dry run» et relancez le remplacement, cette fois avec l'écriture réelle des modifications.

Avantage: traite correctement les données sérialisées, l'URL ne «dérape» pas après le remplacement. Inconvénient: ne fait pas de sauvegarde automatique avant le remplacement (faites-la vous-même, avec le même UpdraftPlus).

Prix: gratuit.

🔗 Better Search Replace sur WordPress.org

Search & Replace

Interface de l'extension Search and Replace dans la barre d'outils WordPress

Search & Replace de l'équipe WP Media, une alternative avec sauvegarde intégrée. Avant le remplacement, l'extension sait créer un dump de la base de données et l'enregistrer. Si quelque chose tourne mal, vous restaurez depuis la sauvegarde en deux clics.

Fonctionnalités supplémentaires:

  • remplacement de domaine/URL en un clic (onglet séparé «Replace Domain / URL»);
  • prise en charge du CSV pour un remplacement par lots (format: «ce qu'on cherche; par quoi on remplace»);
  • changement du préfixe des tables;
  • prise en charge du multisite.

L'extension compte plus de 100 000 installations actives et une note de 4,3. Officiellement, elle n'a pas été testée avec les dernières versions de WordPress, mais les avis des utilisateurs confirment un fonctionnement stable sur WP 6.8 avec PHP 8.2.

Inconvénient: l'interface est moins intuitive que celle de Better Search Replace, la barrière d'entrée est un peu plus haute.

Prix: gratuit.

🔗 Search & Replace sur WordPress.org

Que choisir: une extension ou phpMyAdmin?

Repère rapide: vous changez 1-2 mots dans le texte des articles et vous êtes sûr de la syntaxe SQL, phpMyAdmin est plus rapide. Vous changez de domaine, travaillez avec des données sérialisées ou ne voulez pas toucher la base à la main, installez Better Search Replace et faites un dry run. Il vous faut une sauvegarde intégrée et un remplacement par lots, Search & Replace.

⁉️🤔 Questions fréquentes

Peut-on annuler un remplacement après l'exécution d'une requête SQL?

Non, une requête SQL dans phpMyAdmin est irréversible. C'est précisément pourquoi, avant tout remplacement, une sauvegarde complète de la base est obligatoire. Faites-la via cPanel (section Backup → Download MySQL Database) ou avec l'extension UpdraftPlus. Avec une sauvegarde, vous ramenez toujours la base à l'état «avant».

Que sont les données sérialisées et pourquoi un simple remplacement d'URL les casse-t-il?

La sérialisation, c'est une façon d'empaqueter des structures complexes (tableaux, objets) en une chaîne pour le stockage en base. WordPress l'utilise pour les réglages des thèmes, les données des extensions et des widgets. La chaîne s:26:"http://old-domain.com" signifie «chaîne de 26 caractères». Si vous remplacez le domaine par un plus court ou plus long, la longueur dans s:26 ne correspondra plus à la réalité, et WordPress ne pourra pas lire les données. Les extensions (Better Search Replace, Search & Replace) recalculent la longueur automatiquement. Un remplacement SQL direct, non.

Est-il obligatoire d'utiliser phpMyAdmin ou peut-on passer par WP-CLI?

WP-CLI, une excellente alternative si vous avez un accès SSH. La commande wp search-replace 'ancien-domaine' 'nouveau-domaine' fait la même chose, mais avec un traitement automatique de la sérialisation. C'est même plus sûr que phpMyAdmin, WP-CLI passe par l'API de WordPress, et non directement par MySQL. Cependant, tous les hébergements n'offrent pas l'accès SSH sur les forfaits bon marché, phpMyAdmin est disponible presque toujours.

Peut-on remplacer seulement dans certains articles, et non dans toute la base?

Oui, ajoutez à la requête SQL une condition WHERE. Par exemple, pour remplacer du texte seulement dans les articles d'une catégorie précise: trouvez d'abord l'ID de la catégorie, puis:

1UPDATE wp_posts SET post_content =
2REPLACE(post_content, 'ancien', 'nouveau')
3WHERE ID IN (
4 SELECT object_id FROM wp_term_relationships WHERE term_taxonomy_id = 12
5);

Mais il est bien plus simple de faire un remplacement complet avec dry run dans Better Search Replace, l'extension montrera la table et le nombre de correspondances, et vous décocherez manuellement les tables inutiles.

Que faire si le site ne s'ouvre plus après un remplacement d'URL?

Premièrement, ne pas paniquer. Deuxièmement, restaurer la base depuis la sauvegarde (vous avez bien fait une sauvegarde?). Troisièmement, cause probable: des données sérialisées cassées. Utilisez l'extension Better Search Replace, elle est spécialement conçue pour le remplacement de domaines et traite correctement la sérialisation. Après la restauration de la base, lancez le remplacement avec elle.

Quelle méthode de recherche-remplacement choisir: le bilan final

Le choix dépend de trois facteurs: ce que vous remplacez, la taille du site et votre niveau d'aisance avec SQL.

  • Du texte dans quelques articles → phpMyAdmin avec UPDATE wp_posts. Rapide, mais sans aperçu.
  • Un changement complet de domaine ou un passage en HTTPS → Better Search Replace. Le dry run montrera toutes les lignes touchées avant le remplacement réel, et le traitement intégré de la sérialisation vous préservera des données cassées. C'est le standard de référence pour les migrations.
  • Il vous faut une sauvegarde intégrée → Search & Replace. Crée un dump de la base avant le remplacement et sait le restaurer.

La règle d'or ne change pas: sauvegarde, sauvegarde et encore sauvegarde, avant tout contact avec la base de données. Une seule commande UPDATE sans copie de secours peut mettre le site à terre, alors qu'avec une copie, c'est juste un outil de travail qui économise des heures de routine.