Remplacer un domaine dans une base de données WordPress

Rédacteur : LaRedac
24 mars 2025

Remplacer un domaine dans une base de données WordPress

Lors d’une migration ou d’une mise à jour de site, il est fréquent de devoir modifier un domaine dans l’ensemble des données stockées en base. C’est ce que nous avons cherché à faire en remplaçant un ancien domaine par un nouveau dans une base WordPress. Plusieurs méthodes ont été explorées, avec des résultats variables.

Utilisation de requêtes SQL dans phpMyAdmin

Nous avons d’abord tenté une approche directe en utilisant phpMyAdmin pour rechercher et remplacer l’ancien domaine dans toute la base de données. Une première requête a permis d’identifier les colonnes concernées :

SELECT TABLE_NAME, COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'nom_de_la_base' 
AND DATA_TYPE IN ('char', 'varchar', 'text', 'mediumtext', 'longtext');

À partir de cette liste, nous avons généré les commandes SQL nécessaires au remplacement :

SELECT CONCAT('UPDATE `', TABLE_NAME, '` SET `', COLUMN_NAME, '` = REPLACE(`', COLUMN_NAME, '`, "ancien-domaine", "nouveau-domaine") WHERE `', COLUMN_NAME, '` LIKE "%ancien-domaine%";') 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'nom_de_la_base' 
AND DATA_TYPE IN ('char', 'varchar', 'text', 'mediumtext', 'longtext');

Cependant, cette méthode a montré certaines limites. Elle génère bien les requêtes nécessaires, mais celles-ci doivent ensuite être exécutées séparément, ce qui peut être fastidieux pour une base volumineuse.

Automatiser la modification avec un script PHP

Pour éviter l’exécution manuelle de multiples requêtes SQL, un script PHP a été proposé :

<?php
$mysqli = new mysqli("localhost", "utilisateur", "motdepasse", "nom_de_la_base");

if ($mysqli->connect_error) {
    die("Échec de connexion : " . $mysqli->connect_error);
}

$sql = "SELECT TABLE_NAME, COLUMN_NAME 
        FROM INFORMATION_SCHEMA.COLUMNS 
        WHERE TABLE_SCHEMA = 'nom_de_la_base' 
        AND DATA_TYPE IN ('char', 'varchar', 'text', 'mediumtext', 'longtext')";

$result = $mysqli->query($sql);

while ($row = $result->fetch_assoc()) {
    $table = $row['TABLE_NAME'];
    $column = $row['COLUMN_NAME'];
    $updateQuery = "UPDATE `$table` 
                    SET `$column` = REPLACE(`$column`, 'ancien-domaine', 'nouveau-domaine') 
                    WHERE `$column` LIKE '%ancien-domaine%'";
    $mysqli->query($updateQuery);
}

echo "Remplacement terminé !";
$mysqli->close();
?>

Ce script a l’avantage de traiter l’ensemble des tables en une seule exécution. Toutefois, son utilisation requiert un accès FTP et une exécution en environnement contrôlé, car toute erreur pourrait corrompre les données.

Méthodes simplifiées via WordPress

Pour éviter des manipulations trop techniques, nous avons exploré des solutions directement intégrées à WordPress. Plusieurs outils existent :

  • Better Search Replace : Ce plugin permet d’effectuer le remplacement de manière intuitive depuis l’interface WordPress.
  • WP-CLI : Avec la commande wp search-replace 'ancien-domaine' 'nouveau-domaine' --all-tables, la modification est effectuée proprement, en gérant les données sérialisées.
  • WP Migrate Lite : Utile pour les migrations de site, il inclut une fonction de recherche-remplacement.

Ces solutions sont recommandées pour éviter toute manipulation hasardeuse des données et garantir une modification complète et sécurisée.

Conclusion

Les différentes approches testées ont montré que l’utilisation directe de SQL dans phpMyAdmin peut être efficace mais fastidieuse, tandis que les scripts PHP demandent une exécution prudente. Finalement, les outils spécifiques à WordPress (Better Search Replace, WP-CLI) sont les plus adaptés pour un remplacement rapide et sécurisé du domaine.

Si vous avez besoin d’aide pour effectuer ces modifications sur votre site, n’hésitez pas à nous contacter.

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Voir aussi…

Merci, votre message a bien été envoyé

Nous avons bien reçu votre demande. Nous revenons vers vous au plus vite avec une réponse claire et des premières orientations.

Si votre demande est urgente

contactez-nous par message sur WhatsApp.

WhatsApp