Links in Posts von WordPress ersetzen in der Datenbank mit MySQL-Anweisung

Achtung! Dieser Beitrag ist ursprünglich vom Januar 2009 und damit schon sehr alt. Die hier veröffentlichten Informationen zum Umziehen berücksichtigen keine URLs, die serialisiert abgelegt werden. Bei serialisierten Daten können nicht einfach die URLs ersetzt werden, da hier die Zeichenlänge mit abgespeichert wird. Eine sicherere Variante gibt es hier: https://interconnectit.com/products/search-and-replace-for-wordpress-databases/ (in Englisch)

Der ursprüngliche Artikel:

Gerade ein akuter Fall bei mir gewesen: ich hatte zwecks Domainumzug (nicht bei mir, ich bleib hier! 🙂 ) das Problem, dass ich Artikel eines anderen Blogs in den neuen Blog importiert hatte, in denen Bilder verlinkt waren, welche jedoch noch zur alten Domain verlinkten. Via FTP hab ich das upload-Verzeichnis direkt in den neuen Blog übertragen können und somit alle hochgeladenen Bilder des alten Blogs bereits auf dem neuen Blog gehabt, jedoch nur physisch und nicht verlinkt. Nun wollte ich aber nicht die über 100 Artikel bearbeiten und die Bild-URLs aktualisieren, sondern suchte nach einer anderen Lösung. Ich wollte in der Datenbank in der Tabelle

wp_posts

in der Spalte

post_content

alle URLs mit der neuen Domain ersetzen. Auf der Suche nach einer Lösung suchte ich als erstes in der MySQL-Doku nach der

REPLACE()

-Funktion, diese jedoch liefert keine allzu guten Beispiele :-(. Glücklicherweise traf ich auf den Blog des Pfannenwenders, welcher in seinem Artikel „Suchen und Ersetzen in MySQL-Tabellen“ mir die Lösung auf dem Teller präsentierte.

 

Der entscheidende Befehl, welcher auf der MySQL-Datenbank auszuführen ist, lautet also:

 

UPDATE `wp_posts` SET `post_content` = REPLACE (
`post_content`,
'www.altedomain.de',
'www.neuedomain.de'
)

 

Dieser Befehl ersetzt alle vorkommenden www.altedomain.de mit www.neuedomain.de, beispielsweise: Im Artikel steht noch der alte Link:

<img src="http://www.altedomain.de/wp-content/uploads/bild.jpg" alt="" />

. Nach dem Ausführen des Update-Befehls steht dann statt dem alten Link dort:

<img src="http://www.neuedomain.de/wp-content/uploads/bild.jpg" alt="" />

. Und genauso wollte ich es haben! 🙂

Zu beachten sind die Backticks ( ` ) und die einfachen Anführungszeichen ( ). Die Tabelle und die Spalte der Tabelle müssen in Backticks geschrieben werden, die Suchstrings in einfachen Anführungszeichen. Falsch gesetzt wirft die Datenbank einen Fehler und führt den Update-Prozess nicht durch. Und, wie schon in Pfannenwenders Artikel: BACKUP der Datenbank vorher machen! Denn sonst ist alles schlimmstenfalls verpfuscht und nicht wiederherstellbar!

So, nun hoff ich mal, dass das jemandem hilft :-). Mir hats sehr geholfen und mindestens 600 Klicks erspart und ca. 2,5 Stunden Arbeit!

strstr() / stristr() – „Bug“: Wrong parameter count for stristr() – mögliche Lösung?

Problem: Ich habe einen String, welchen ich auseinandernehmen will. Der String beinhaltet ein Sonderzeichen als Trenner. Ich möchte alle Zeichen, welche VOR diesem Trenner stehen als Teilstring bekommen. Die Funktion strstr() bzw. stristr() (Groß- und Kleinschreibung ist mir egal) liefert mir jedoch nur den Teilstring NACH dem gefundenen Sonderzeichen. Sie verfügt jedoch über den Zusatzparameter "before_needle". Wenn ich den auf TRUE setze, sollte die Funktion den Teilstring vor dem gefundenen Sonderzeichen (Suchstring "needle") zurückgeben, stattdessen passierte mir folgendes:

Gerade beim Auseinandernehmen von Strings und dem Versuch, den Teilstring eines Strings vor dem gefundenen Suchstring zu bekommen mittels der PHP-Funktion strstr() oder stristr(), kam folgender Fehler zustande: "Wrong parameter count for stristr()". Leider gibts die Funktion erst ab PHP Version 5.3, die ist aber noch nicht veröffentlicht. Wer einen Teilstring haben möchte, der VOR dem gefundenen Parameter steht, kann stattdessen mb_stristr() benutzen. Das funktioniert, wobei ich nicht weiß, ob diese Funktion, da Multibyte-String-Funktion, speicherintensiver ist. Da ich nur einen ganz kleinen String auseinandernehmen musste, stört mich dies jedoch nicht ;-). Vielleicht hilfts ja noch jemandem weiter!

Ach ja: Frohes neues Jahr allen Lesern und denen, die auf diesen Artikel stoßen! 🙂

WordPress Stats Plugin zeigt keine Klicks für Posts und Seiten an – Gelöst!

Nach langem Suchen hab ich endlich die Lösung dafür gefunden. Wie schon früher berichtet gab es ja auf Clims Blog Probleme mit dem Plugin WordPress Stats. Nach einer Änderung am Theme hat das WordPress Stats Plugin immer 0 Views angezeigt, obwohl er Kommentare zu den Posts bekam. Nach diversen oben nachzulesenden Änderungen fehlten jedoch immernoch die Klicks auf die Artikel und Seiten. Da ich seit kurzem wieder intensiv an der Theme-Programmierung für WordPress arbeite, kam mir der Gedanke, dass ich ja im Forum von WordPress nochmal danach suchen kann. Siehe da, dort fand ich den Artikel, welcher besagt, dass das WP-Stats Plugin in der footer.php – Datei des Themes den Aufruf der wp_footer() – Funktion benötigt. Also flugs den Code oberhalb des schließenden -Tags in die footer.php gepackt und endlich geht alles wieder wie normal. Endlich werden die Klicks auf die Seiten und Posts wieder angezeigt! 🙂

Emailadressen in WordPress verschlüsseln mit PHPEnkoder

 

Ich mich mal wieder auf die Suche gemacht und nach einem Plugin gesucht, welches Emailadressen mittels JavaScript verschlüsselt, damit Spambots und Spammer die eMail nicht automatisiert herauslesen können. Endlich hab ich auch eine sehr einfache und effektive Methode gefunden. Im Beitrag von seovision.de fand ich nun das Plugin von weaselhat.com namens PHPEnkoder. Sinnvoll ist der Einsatz dieses Plugins, wenn man eMailadressen im Klartext in Beträgen oder Seite, beispielsweise dem Impressum,  verwenden will, so dass Leser mit Klick auf den mailto-Link direkt eMails von ihrem Client wie Thunderbird oder Outlook an den Betreiber senden können. Das Plugin verschlüsselt alle im Text gefundenen eMailadressen auch ohne mailto-Link mittels JavaScript. Kommt ein Nutzer ohne JavaScript, wird die eMailadresse nicht angezeigt. Für Webseitenbetreiber mit barrierefreiem Anspruch ist dieses Plugin leider nichts. Getestet hab ich das Plugin mit WordPress 2.6.2, funktioniert einwandfrei.

Vergleich von Seitwert.de und Qualidator.com

Eigentlich wollte ich nach einer Portierungsmöglichkeit von S9y zu WP suchen doch dann stieß ich als erstes auf einen interessanten Artikel vom Zeitgeist über 8 WordPress – Alternativen, den ich gleich erstmal lesen musste, auch wenn es gar nicht meiner Suchanfrage entsprach. In den Kommentaren traf ich dann auf einen weiteren interessanten Artikel über den Qualidator und einen Vergleich von WordPress und Serendipity. Was ist nun der Qualidator? Musste ich gleich mal erkunden, da er so ähnlich klingt wie der Validator des W3C. Die Seite bietet die Möglichkeit, die eigene Seite nach ihrer Qualität und drei Hauptkriterien zu testen: Zugänglichkeit, Benutzerfreundlichkeit und Suchmaschinenoptimierung. Nach der Auswertung bietet die Seite gleich hilfreiche Links an, mit welchen man seine Seite verbessern kann. Bisher kannte ich nur Seitwert.de und fand es dort auch recht hilfreich. So gibts aber gleich noch eine weitere hilfreiche Seite! Und eines lässt sich für mich daher definitiv noch feststellen: ich muss meinen Blog dringend mal optimieren! Gesamtbewertung beim Qualidator war nur 74,4%. Aber das sollte nun langsam mal genug Motivation für mich sein, loszulegen!

Mein eigentliches Suchziel hab ich nun natürlich aus den Augen verloren, das werd ich jetzt mal wieder aufnehmen! Vielleicht find ich ja einen hilfreichen Artikel, welcher mir sagt, wie und ob man einen Serendipity-Blog auf einen WordPress-Blog umstellen kann?

****UPDATE***

Ich konnte es natürlich nicht lassen, noch ein paar Dinge zu testen. So hab ich die Seiten sich gegenseitig bewerten lassen und sich selbst … aber seht selbst:

 

Seitwert.de testet Qualidator.com:

 

Seitwert.de testet qualidator.com

mit ausführlicher Beschreibung:

Seitwert.de testet Qualidator.com ausführlich

 

 

Qualidator testet Seitwert.de:

 

Qualidator.com testet seitwert.de

 

Und nun zum Abschluss: Qualidator testet qualidator.com:

 

und kommentarlos lass ich mal stehen, was passiert, wenn Seitwert seitwert.de testen soll:

:-).

Ich lasse mal die Screenshots für sich sprechen!

Im letzten Vergleich hab ich mal heise.de verglichen, da diese Seite bei seitwert.de als beste Seite gelistet wird und von den 100 Punkten 88,54 Punkte holt. Beim Test mit dem Qualidator jedoch holt heise.de nur 75,6%, also nur knapp mehr als mein Blog :-).