Ich habe eine Site in WordPress auf unserer Entwicklungsmaschine erstellt. In dem von uns verwendeten Design gibt es zahlreiche Widget-Bereiche, in denen Text angezeigt werden kann (Seitenleiste und Startseite). In all diesen Bereichen habe ich einfache Text-Widgets verwendet, um unsere Anzeigeinformationen zu platzieren.
Bei der Migration der Site zur Produktion habe ich das WP-DB-Backup-Plugin verwendet, um einen Snapshot der Datenbank zu erstellen. Anschließend habe ich die resultierende .sql-Datei bearbeitet, um alle Dateipfade und URL-Verweise zu aktualisieren, die auf unsere Produktionssite verweisen.
Nach dem Erstellen der Datenbank, der Website und dem Kopieren aller Dateien auf die Produktionssite führe ich die .sql-Datei an der mysql-Eingabeaufforderung aus, um die Daten in die neue Datenbank zu importieren.
Wenn ich jedoch zur Produktionsstätte gehe, wird ein Teil des Textes angezeigt und ein Teil nicht. Wenn ich in den Widgets-Bereich der Site schaue, fehlen die Text-Widgets in einigen Widget-Zonen. Die Text-Widgets sind nicht einmal in der Zone "Inaktives Widget" sichtbar, sie sind einfach nicht dort.
Ich habe sogar versucht, den Vorgang mit dem BackWPup-Plugin zu wiederholen, wobei ich bemerkte, dass die SQL-Syntax sich unterscheidet, wenn die Datenbank ausgegeben wird.
Warum verliere ich Text-Widget-Daten während des Imports?
Antworten:
Hier liegt Ihr Problem:
Das kannst du nicht machen. WordPress speichert viele Optionen als "serialisierte Daten", die sowohl den Zeichenfolgeninhalt von Dingen als auch deren Länge enthalten . Wenn Sie also die URL ändern und die Länge ändert, sind die serialisierten Daten nicht mehr korrekt und PHP lehnt sie ab.
Das langfristige Problem ist, dass Sie es im Grunde falsch machen. Wenn Sie eine Entwicklungssite einrichten, deren Daten migriert werden sollen, sollte sie zunächst genau dieselbe URL wie Ihre Produktionssite haben. Sie können Ihre HOSTS-Datei manuell bearbeiten, um dieser Produktionsdomäne (wie example.com) eine andere IP-Adresse (wie 127.0.0.1) zuzuweisen. Auf diese Weise wird die "Produktions" -URL nur für Sie zur Entwicklungssite. Dann können Sie Ihre Daten und Links und alles andere unter Verwendung dieser Produktions-URL erstellen, und wenn Sie die Daten migrieren, muss nichts daran geändert werden.
Verwenden Sie jedoch kurzfristig keine einfache Textsuche / -ersetzung für die SQL-Datei. Wie Sie festgestellt haben, werden die Dinge dadurch zerbrochen.
Und während ich zögere, es vorzuschlagen, gibt es eine Möglichkeit, den WordPress-Kerncode zu ändern, um diese kaputten Serialisierungen zu handhaben. Sie müssen die Datei wp-includes / functions.php ändern und die Funktion maybe_unserialize () folgendermaßen ändern:
Dies ist KEINE praktikable langfristige Lösung. Es sollte nur verwendet werden, um Sie sofort zum Laufen zu bringen. Auf lange Sicht müssen Sie Ihren Entwicklungsprozess korrigieren, damit Sie diese Art von URL-Munging nicht von Anfang an ausführen müssen.
quelle
most famous worst code
Preis muss nicht weiter suchen.Um dieses Problem zu lösen, verwende ich immer das hier bereitgestellte WordPress Serialized Search & Replace Tool. Es funktioniert einwandfrei ohne Probleme. Ich verwende dies seit langer Zeit für alle meine Website-Migrationsanforderungen. Hiermit werden die Probleme bei der Migration der Entwicklungsdatenbank in die Produktion behoben.
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/
quelle
http://localhost/Me/site_name
durchhttp://site.dev
(von einem lokalen Host zu einem anderen) mit v 3.0.0 Ich habe mein Widget und Menüpositionen seltsam genug verlieren. Vielleicht hängt dieses Problem auch mit der Saitenlänge zusammen.localhost/Me/site_name
mitsite.dev
.Ottos Antwort ist genau richtig. Ich habe das auch auf die harte Tour entdeckt.
Ich habe es jedoch geschafft, dies mit einem coolen Skript unter http://spectacu.la/search-and-replace-for-wordpress-databases/ zu umgehen.
Gehen Sie wie folgt vor, um WordPress und einen neuen URL / Domain-Namen zu migrieren:
quelle
Das OP war beim Suchen und Ersetzen der Datenbank-Exportdatei übereifrig und änderte schließlich das Vorkommen von "wp_" in einigen der serialisierten Daten. Die Lösung besteht darin, beim Suchen und Ersetzen sparsamer zu sein, indem das Backtick in den regulären Ausdruck einbezogen und die verbleibenden Schlüssel in der Datenbank nach dem Import manuell aktualisiert werden.
Wenn Sie das Präfix migrieren und ändern und einen manuelleren Ansatz bevorzugen, gehen Sie wie folgt vor (dies behebt nur die Bedenken des OP und behandelt nicht die Aktualisierung der Site-URL).
quelle
Ich habe das WP Migrate- Plugin verwendet, das http- und Ordner-Patches ersetzt. Beim Importieren ist ein einziges Problem aufgetreten, es wurde jedoch behoben, die folgenden Zeilen oben in die generierte SQL-Datei einzufügen:
Ich habe es auch mit dem Tool zum Suchen und Ersetzen (v2.1) versucht, das von @Yoav beantwortet wurde, aber meine serialisierten Daten werden trotzdem beschädigt.
quelle