Suchen und Ersetzen von WordPress-Datenbanken auf einfache Weise
Es gibt mehrere Anlässe, bei denen wir müssen URLs in unserer WordPress Website Datenbank ändern. Zum Beispiel müssen wir dies nach der Migration einer WordPress-Datenbank von einer Site, z. von dem http://acme.com
entfernter Produktionsstandort an die http://acme.dev
lokale Entwicklungswebsite auf unserem Computer.
WordPress.org enthält eine Vielzahl von Plug-Ins, wie WP DBManager und WP Migrate DB, und es gibt auch eine Reihe von Tools von Drittanbietern, die dies ermöglichen Datenbank importieren leicht. Der schwierige Teil muss sein Ändern Sie jede URL-Instanz in der Datenbank.
Nach der Migration der Datenbank befinden sich darin URLs noch auf die alte Seite verweisen, in diesem Fall zu acme.com
. Sie finden die alte URL in der wp_options
Tabelle, als Wert der gesetzt Seiten-URL
und Zuhause
Optionen, und es ist wahrscheinlich auch in mehrere andere Zeilen und Tabellen in der Datenbank eingebettet. Diese alten URLs können möglicherweise dazu führen, dass Ihre Website nicht ordnungsgemäß ausgeführt wird Ändern Sie sie in die neue URL, in unserem Beispiel zu acme.dev
.
An dieser Stelle können Sie auf unsere Entwicklungsseite unter zugreifen acme.dev
werde einfach führen auf eine leere Seite.
Wie ändern wir also alle diese URLs in der Datenbank??
Ausführen einer SQL-Abfrage
Normalerweise führen Benutzer die folgende SQL-Abfrage aus, die die Werte von ersetzt Seiten-URL
und Zuhause
Optionen in der wp_options
Tabelle.
UPDATE wp_options SET option_value = replace (Optionswert, "http://acme.com", "http://acme.dev") WHERE option_name = 'home' ODER option_name = 'siteurl';
Anschließend verwenden sie eine andere SQL-Abfrage, um alle URL-Vorkommen in der URL zu ersetzen wp_posts
Tisch, nämlich in der post_content
Spalte jeder Zeile.
UPDATE wp_posts SET post_content = replace (post_content, "http://acme.com", "http://acme.dev");
Das Ausführen dieser Abfragen ist eine praktikable Lösung, die jedoch nicht bequem ist. Es könnte sogar nervenaufreibend sein, zu sehen, wie die Datenbank durch ein einfaches Versehen in der Abfrage haywire werden kann.
WP-CLI nutzen
Eine andere Route, die wir machen können, und die ich für eine praktischere Alternative gefunden habe, ist von Verwenden der WP-CLI-Befehlszeile. Dies bedeutet, dass Sie WP-CLI installiert haben müssen.
Vorausgesetzt, Sie haben WP-CLI installiert und haben die wp
Wenn der Befehl als Alias verfügbar ist, navigieren Sie zu dem Verzeichnis, in dem sich Ihre WordPress-Site-Dateien befinden.
Führen Sie dann den folgenden Befehl aus:
wp search-replace "http://acme.com" http://acme.dev
Der erste Parameter, "http://acme.com"
, ist der alte Eintrag, der durch den zweiten ersetzt wird, "http://acme.dev"
.
Die Befehlszeile wird durchsucht Alle Tabellen in der Datenbank, nicht nur das post_content
Spalte und wp_options
Tisch und Ersetzen Sie jede Instanz des Eintrags, der durch die Parameter des Befehls übergeben wird.
Wie Sie dem obigen Screenshot entnehmen können, wurden insgesamt 225 ersetzt. Und wir haben es durch eine einfache Befehlszeile gemacht.
Ich denke, es ist erwähnenswert, dass wir das nutzen können wp suchen und ersetzen
Befehl, nicht nur zum Ersetzen von URLs, sondern für jedes Stück Wert auch in der Datenbank gespeichert. Wir können die Operation auch auf eine bestimmte Tabelle beschränken, indem Sie den Tabellennamen als vierten Parameter übergeben:
wp search-replace '.jpg ".webp" wp_posts
Beim Ausführen des obigen Befehls wird nur gesucht wp_posts
, die Tabelle, in der unsere Inhalte (Posts, Seiten usw.) gespeichert werden, und ersetzen die Bilderweiterung von .jpg
zu .webp
.
WP-CLI lässt einen verwickelten SQL-Vorgang intuitiver aussehen und Sie können auf bequemere Weise damit arbeiten. Wenn Sie Ihre Befehle verfeinern möchten, sehen Sie sich die Dokumentation von WP-CLI an. Diese enthält eine Liste von Optionen, mit denen Sie eine erweiterte Operation mit dem ausführen können wp suchen und ersetzen
Befehl.