wake-up-neo.com

Welche SQL-Abfrage, um eine einfache Suche und Ersetzung zu tun

Immer wenn ich eine neue Website erstelle, erstelle ich zuerst eine Staging-Site in einer Subdomain wie "stage.domain-name.com".

Nachdem alles korrekt funktioniert, exportiere ich die Datenbank, öffne sie in Notepad ++ und führe ein Suchen/Ersetzen für "subdomain.domain-name.com" aus und ersetze sie durch "domain-name.com" ... schließlich importiere ich sie in eine neue Datenbank für die Live-Site.

Meine Frage ist ... welche SQL-Abfrage müsste ich ausführen, wenn ich diese einfache Suche/Ersetzung in der gesamten Datenbank mit phpmyadmin durchführen möchte?

-CH

19

Die Tabelle, in der Ihre URL gespeichert ist, lautet wp_options. Sie sollten ein Update für die Spalten durchführen, die die URL für Ihre Site verwenden:

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"

Möglicherweise fehlt ein Wert, aber wenn Sie diesen Such-/Ersetzungsvorgang erneut ausführen, können Sie die zu aktualisierenden Werte und Tabellen feststellen und zu diesem Skript hinzufügen.

WordPress Codex hat eine nette Anleitung, wie man eine Site-URL ändert. Vielleicht ist das sogar noch einfacher für Sie: Ändern der Site-URL

13
Fernando Briano

Am besten Optionen, Posts, Post-Content und Post-Meta:

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');

Siehe auch Suchen von Daten mit phpMyAdmin und MySQL | Packt Publishing. Und Search RegEx ist ein gutes WP Plugin, um mit Grep alle Posts und Seiten durchsuchen und ersetzen zu können.

Update 16.06.2015: Die Verwendung des im nächsten Satz verlinkten Tools ist viel besser, da ein einfaches Suchen/Ersetzen wie oben in einem Datenbank-Dump serialisierte Daten zerstört. Siehe interconnectit.com WordPress Serialized PHP Search Replace Tool. Auf diese Weise brechen Sie keine serialisierten Daten und müssen RegEx nicht für Post-Inhalte ausführen, da das Interconnect-Skript die URLs überall ändert. Ich benutze dieses Tool die ganze Zeit, um Websites in andere Domänen zu migrieren oder einfach eine globale Änderung von http zu https vorzunehmen, um SSL ohne Plugins zu erzwingen und alle URLs im Inhalt zu ändern, um unsichere Elementfehler zu vermeiden.

27
markratledge

Dies ist ein großartiges Drop-In-Skript, das ich verwende, und es funktioniert hervorragend mit den serialisierten Arrays, die WP zum Speichern von Optionen verwendet. Stellen Sie einfach sicher, dass Sie es von Ihrem Remote-Server löschen, wenn Sie fertig sind, da dies ein großes Sicherheitsrisiko darstellt.

https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

9
lancemonotone

Dafür benutze ich WP-CLI , weil ich es am einfachsten finde und es sich um serialisierte Daten kümmert.

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

Es gibt auch eine Option, die Ihre Änderungen in eine SQL-Datei schreibt, anstatt die eigentliche Datenbank zu manipulieren:

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

4
Jan Beck

sie müssen dies nicht tun, Sie können relative Pfade verwenden.

wenn Sie etwas verlinken, anstatt subdomain.soemthing.com/image.jpg - verwenden Sie zum Beispiel /image.jpg

auf diese Weise werden Sie dem Problem nicht in erster Linie gegenüberstehen.

andernfalls können Sie für eine mysql update-Anweisung verwenden

update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’);
3
mireille raad

Um die häufig benötigte WordPress-Domain zu ändern, muss die Site möglicherweise über localhost live geschaltet werden: Dies ist eine vollständige Liste der Aktualisierungsabfragen:

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');
  • Wir müssen bei Bedarf auch andere Tabellen hinzufügen, die nicht standardmäßig mit WP belegt sind.

UPDATE: Search Replace DB Version 3.1.0 ist ein benutzerfreundliches Front-End-Tool für Entwickler, mit dem Sie datenbankweite Such-/Ersetzungsaktionen ausführen können, die keinen Schaden anrichten PHP serialisierte Zeichenfolgen oder Objekte.

2
Reza Mamun