Quelle requête SQL pour effectuer une simple recherche et remplacement

18

Chaque fois que je crée un nouveau site Web, je crée d'abord un site intermédiaire sur un sous-domaine tel que "stage.domain-name.com".

Après que tout fonctionne correctement, j'exporte la base de données, l'ouvre dans le bloc-notes ++ et effectue une recherche / remplacement pour "sous-domaine.nom-domaine.com" et le remplace par "domaine-nom.com" ... enfin je l'importe dans une nouvelle base de données pour le site actif.

Ma question est la suivante: quelle requête SQL devrais-je exécuter si je voulais simplement effectuer cette simple recherche / remplacement sur l'ensemble de la base de données à l'aide de phpmyadmin?

-CH

    
posée NetConstructor.com 25.01.2011 - 12:09

7 réponses

13

La table dans laquelle votre URL est enregistrée est wp_options. Vous devriez faire une mise à jour sur les colonnes qui utilisent l'URL de votre site:

UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "siteurl"
UPDATE TABLE wp_options SET option_value = "new domain" WHERE option_name = "home"

Il se peut que certaines valeurs manquent, mais chaque fois que vous effectuez cette opération de recherche / remplacement, vous pouvez remarquer les valeurs et les tables à mettre à jour, puis les ajouter à ce script.

WordPress Codex contient un guide pratique sur la modification de l’URL d’un site. C’est peut-être encore plus pratique pour vous: Modifier l’URL du site

    
réponse donnée Fernando Briano 25.01.2011 - 12:25
26

Il est préférable de choisir des options, publications, contenu de publication et méta de publication:

UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl';

UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');

UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');

UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

Voir aussi Rechercher des données à l'aide de phpMyAdmin et de MySQL | Packt Publishing. Et Search RegEx est un bon plugin WP permettant de rechercher et de remplacer par Grep à travers tous les posts et pages.

Mise à jour du 16/06/2015: Il est préférable d'utiliser l'outil lié dans la phrase suivante, car une recherche / remplacement simple, comme ci-dessus dans un cliché de base de données, cassera les données sérialisées. Voir interconnectit.com L'outil de remplacement de la recherche PHP synchronisé WordPress en série. De cette façon, vous ne coupez pas les données sérialisées et n'avez pas besoin d'exécuter RegEx sur le contenu de publication, car le script d'interconnexion modifie les URL partout. J'utilise cet outil tout le temps pour migrer des sites vers différents domaines, ou simplement pour effectuer un changement global de http à https afin de forcer SSL sans plug-ins et de modifier toutes les URL du contenu pour éviter les erreurs d'élément non sécurisées.

    
réponse donnée markratledge 25.01.2011 - 15:02
9

C’est un excellent script que j’utilise et qui fonctionne à merveille avec les tableaux sérialisés que WP utilise pour stocker les options. Assurez-vous simplement de le supprimer de votre serveur distant lorsque vous avez terminé, car cela représente un risque énorme pour la sécurité.

enlace

    
réponse donnée lancemonotone 02.08.2011 - 21:47
3

vous n’avez pas à le faire, vous pouvez utiliser des chemins relatifs.

lorsque vous liez quelque chose au lieu de subdomain.soemthing.com/image.jpg - utilisez par exemple /image.jpg

comme ça, vous ne rencontrerez pas le problème en premier lieu.

sinon, vous pouvez utiliser une instruction de mise à jour mysql

update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’);
    
réponse donnée mireille raad 25.01.2011 - 12:45
3

Pour cela, j'utilise WP-CLI car je le trouve le plus simple et gère les données sérialisées. .

wp search-replace 'http://example.dev' 'http://example.com' --skip-columns=guid

Il existe également une option qui écrit vos modifications dans un fichier SQL au lieu de manipuler la base de données proprement dite:

wp search-replace foo bar --export=database.sql

    
réponse donnée Jan Beck 27.04.2016 - 10:41
2

Pour modifier le domaine wordpress dont nous avons souvent besoin, il peut s’avérer nécessaire de faire vivre le site à partir de localhost: voici une liste complète des requêtes de mise à jour:

UPDATE wp_posts SET guid = replace(guid, 'http://olddomain.com','http://newdomain.com');
UPDATE wp_posts SET post_content = replace(post_content, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_links SET link_url = replace(link_url, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_links SET link_image = replace(link_image, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_postmeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');
UPDATE wp_usermeta SET meta_value = replace(meta_value, 'http://olddomain.com', 'http://newdomain.com');

/*UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com') WHERE option_name = 'home' OR option_name = 'siteurl' OR option_name = 'widget_text' OR option_name = 'dashboard_widget_options';*/
UPDATE wp_options SET option_value = replace(option_value, 'http://olddomain.com', 'http://newdomain.com');
  • Nous devons aussi ajouter d'autres tables qui ne sont pas par défaut avec WP si nécessaire.

MISE À JOUR: Rechercher à remplacer la base de données version 3.1 .0 est un outil frontal convivial pour les développeurs, qui vous permet d’effectuer des actions de recherche / remplacement de base de données à l’échelle de la base de données, sans endommager les chaînes ou les objets PHP sérialisés.

    
réponse donnée Reza Mamun 24.11.2011 - 17:09
-1

En fait, vous n'avez pas besoin d'utiliser une requête SQL mais quelques ajustements dans les fichiers wp_config et functions.php de votre thème. Découvrez ce sujet dans Wordpress Codex: enlace

    
réponse donnée GI_MED 06.05.2015 - 13:10

Lire d'autres questions sur les étiquettes