Permalink

0

MailPoet (Wysija) Newsletter-Tool, Domain-Umstellung bewältigen

Wer schon einmal ein WordPress-System auf eine andere/neue Domain gezügelt hat, kennt die Probleme, welche damit entstehen können. WordPress und verschiedenste Plugins haben die „Saumode“ an vielen Orten die komplette URL in der Datenbank zu hinterlassen.

Normalerweise reicht es einen Export der Datenbank via phpMyAdmin oder einem anderen DB-Admin Tool zu ziehen, ein „Suchen & Ersetzen“ auf die alte/neue Domain zu machen und danach die Datenbank wieder zu importieren. Oder man verwendet die offizielle Methode von WordPress. Bei beiden Varianten kann es zu Probleme mit Plugin-Einstellungen kommen.

Problem 1. Es gibt Plugins welche Server-Pfade wie z.B. /usr/user1/html/meinedomain/ in die Datenbank mitspeichern, auch diese müssen gesucht und ersetzt werden.

Problem 2. Irgendwelche Daten werden im JSON-Format gespeichert, man findet dann solche Beispiele (Auszug):

hier ist ein String gespeichert mit einer Länge von 26 Zeichen. Nun ersetzt man auf z.B. www.meinedomain.ch (25 Zeichen), somit wird die Länge ungültig und das Plugin „zerschiesst“ dann die Settings.

Problem 1 und Problem 2 treten u.a. beim Plugin „BackWPup“ auf. Soweit so gut. Das sind Probleme die ich kenne und handeln kann. Sorry, ich bin abgeschweift ;)

Härtefall MailPoet (Wysija)

Ausgangslage: Domainumstellung. Alle obigen Schritte wurden sauber erledigt.
Problem: Im Wysija Plugin sind die Newsletter nicht mehr korrekt (falsche Datenpfade)

Die Lösung
In der Tabelle „wp_wysija_email“ befinden sich die abgespeicherten Newsletter. Dort findest Du das Feld „params“ und das Feld „wj_styles„.

Wysija / Tabellenauszug

In diesen Feldern sind „wirre Zeichen“. Auf den ersten Blick sah mir das nach base64 aus. Es war base64. 100 Punkte & ein Red Bull! ;)

Die Lösung ist nun einfach. Du nimmst den encodierten Wert aus der DB, decodierst diesen und suchst darin die Domain und ersetzt diese. Danach encodierst Du diesen Wert wieder und jetzt zurück damit in die DB. Die PHP base64 Funktion oder einen base64 Encoder & Decoder werden Dir dabei helfen. Fertig.

Was war der Grund dieses Feld base64 zu encodieren? Ein Entwickler-Kollege meint, dass damit Probleme mit dem UTF-8 Charset umgangen werden. Super, toller Workaround! *ironieoff*

Kommentar verfassen