WordPress: Beliebige Inhalte mit SQL suchen und ersetzen

Texte in der WordPress-Datenbank schnell ändern...

Werbung
Mit einem einfachen SQL-Befehl können in Sekundenschnelle Suchen/Ersetzen-Operationen ausgeführt und so Postings und Seiteninhalte effizient bearbeitet werden.
Mit einem einfachen SQL-Befehl können in Sekundenschnelle Suchen/Ersetzen-Operationen ausgeführt und so Postings und Seiteninhalte effizient bearbeitet werden.
☆ Dieser Artikel ist Teil unserer WordPress-Trickkiste – Tipps, Tricks und Tutorials… ☆

Kleinere Änderungen an bestehenden Posts und Seiteninhalten sind dank der intuitiven Benutzeroberfläche von WordPress auch für wenig versierte Anwender relativ einfach umzusetzen. So weit, so gut.

Herausfordernder wird es, wenn man in einem großen Blog oder einer komplexen Website umfangreiche Anpassungen an den Inhalten vornehmen möchte, beispielsweise um

  • Wörter und Sätze oder ganze Textblöcke in Posts zu ersetzen,
  • Disclaimer, biographische Angaben oder Hinweise an das Ende von Posts einzufügen,
  • vorhandenes HTML, JavaScript und Shortcodes zu entfernen,
  • Domainnamen oder komplette URLs zu ersetzen oder
  • häufiger vorhandene Rechtschreibfehler zu korrigieren.

Bei einer Handvoll Beiträgen ist das in einer guten Stunde schnell erledigt. Doch was tun, wenn der Blog nicht ein oder zwei Dutzend, sondern mehrere Hundert oder gar Tausende von Beiträgen umfasst?

Hier kann man entweder zu einem der vielen Plugins greifen, die man unter Stichworten wie „global search replace“ im Plugin-Repository von WordPress findet.

Eine andere Möglichkeit besteht in der direkten Manipulation der Datenbank. WordPress nutzt das sequentielle Datenbanksystem MySQL (bzw. dessen Fork MariaDB), welches hundertprozentig kompatibel zur Datenbanksprache SQL ist.

Voraussetzungen

Um SQL-Befehle auf Ihre WordPress-Datenbank anwenden zu können, benötigen Sie auf Ihrem Server ein SQL-Verwaltungstool wie beispielsweise phpMyAdmin oder ein vergleichbares Frontend für MySQL-Datenbanken. Alternativ kann SQL auch auf Kommandozeilen-Ebene des SQL-Servers genutzt werden.

Bei Fragen zur Bedienung von phpMyAdmin oder wie Sie Zugriff auf die Shell erhalten, wenden Sie sich bitte an den technischen Support Ihres Webhosters.

Backup erstellen!

Bitte erstellen Sie vor Arbeiten an der WordPress-Datenbank immer ein aktuelles Backup Ihrer Daten und informieren sich darüber, wie dieses im Notfall einzuspielen ist. SQL-Befehle sind mächtige Werkzeuge… die leider auch mächtig daneben gehen können. 😉

Das gilt im übrigen auch, falls Sie sich für die Nutzung eines Plugins entscheiden!

Allgemeine Syntax für Suchen/Ersetzen mit SQL

update TABELLE set FELD1 = replace(FELD2, 'Suchtext', 'Ersatztext');

So funktioniert’s:

Ganz allgemein formuliert, wenden wir auf jeden Datensatz einer definierten Tabelle die Suchen/Ersetzen-Funktion „replace“ an:

Die Funktion sucht in einem bestimmten Feld nach einer Zeichenkette und ersetzt diese durch eine andere. Das Ergebnis wird von der Funktion zurückgeliefert und dem Feld erneut zugewiesen (und somit dessen vorheriger Inhalt überschrieben).

  • TABELLE: Auf diese SQL-Tabelle wird der Befehl „update“ („ändern“) angewendet.
  • FELD1: Das zu ändernde Feld in der Tabelle.
  • Bei „replace“ handelt es sich um eine SQL-Funktion zum Suchen und Ersetzen von Zeichenketten (Strings). Es wird das in der Funktion angegebene Feld FELD2 durchsucht, gefundene Textstellen darin ersetzt und schließlich der gesamte Feldinhalt an FELD1 zurückgeliefert.

Da wir den Eintrag eines Feldes ändern möchten, müssen FELD1 und FELD2 natürlich identisch sein.

Tipp: Möchten Sie im Suchtext bzw. Ersatztext das Zeichen Apostroph/Hochkomma nutzen, dann muss dieses aufgrund seiner speziellen Bedeutung als Trenner gedoppelt werden, z.B.

update TABELLE set FELD1 = replace(FELD2, 'Wir machen''s so!', 'Wir machen es so!');

Suchen und Ersetzen von Textstellen in WordPress

Im Folgenden haben wir einige Beispiele für SQL-Anweisungen zusammengestellt, die eine Suchen/Ersetzen-Funktion auf die WordPress-Datenbank anwenden.

Beachten Sie bitte, dass die in den Beispielen angegebenen Tabellennamen den Vorgaben von WordPress entsprechen. Haben Sie beispielsweise während der Installation ein eigenes Tabellen-Präfix festgelegt, müssen Sie die Bezeichnungen natürlich entsprechend anpassen.

Text innerhalb beliebiger Inhalte ändern (z.B. Postings, Seiten, etc.)

update wp_posts set post_content = replace(post_content, 'Suchtext', 'Ersatztext');

So funktioniert’s:

Wir greifen auf die Tabelle „wp_posts“ zu und ändern bei allen Datensätzen den Eintrag des Felds „post_content“. Die „replace“-Funktion sucht nach dem angegebenen String und ersetzt alle Treffer (auch mehrfache innerhalb ein und desselben Datensatzes).

Gut zu wissen: Hiermit ändern Sie auch eventuell vorhandene Revisionen.

Texte in Blog-Postings ändern

update wp_posts set post_content = replace(post_content, 'Suchtext', 'Ersatztext') WHERE post_type='post';

So funktioniert’s:

In diesem Beispiel beschränken wir die Suchen/Ersetzen-Operation auf alle Posts (Inhaltstyp „post“). Die Inhalte von Seiten, Revisionen (auch die der Postings) und Anhängen werden nicht verarbeitet.

Texte in Seiten ändern

update wp_posts set post_content = replace(post_content, 'Suchtext', 'Ersatztext') WHERE post_type='page';

So funktioniert’s:

Wie zuvor, allerdings filtern wir hier nach einem bestimmten Inhaltstyp, nämlich „page“ (Seite).

Attachments („Dateianhänge“)

Zum Inhaltstyp „attachment“ gehören in WordPress grundsätzlich alle im Bereich „Medien“ vorhandenen Elemente wie Bilder, Audio- und Videodateien sowie sämtliche Arten von Dokumenten (sprich, alle Dateien, die Sie manuell hochladen).

Und hier haben wir zudem einen Sonderfall… die Inhalte von Attachments erstrecken sich nämlich über zwei Tabellen:

  • Die Tabelle „wp_posts“ enthält Beschreibung, Beschriftung und Titel.
  • Die Tabelle „wp_postmeta“ enthält den alternativen Text.

Beschreibungen der Attachments ändern

update wp_posts set post_content = replace(post_content, 'Suchtext', 'Ersatztext') WHERE post_type='attachment';

Beschriftungen der Attachments ändern

update wp_posts set post_excerpt = replace(post_excerpt, 'Suchtext', 'Ersatztext') WHERE post_type='attachment';

Titel der Attachments ändern

update wp_posts set post_title = replace(post_title, 'Suchtext', 'Ersatztext') WHERE post_type='attachment';

Alternative Texte der Attachments ändern

update wp_postmeta set meta_value = replace(meta_value, 'Suchtext', 'Ersatztext') WHERE meta_key='_wp_attachment_image_alt';

Nutzerkommentare ändern

update wp_comments set comment_content = replace(comment_content, 'Suchtext', 'Ersatztext');

So funktioniert’s:

Kommentare werden in einer eigenen Tabelle („wp_comments“) gespeichert, ansonsten bleibt die Struktur des Befehls identisch.


Werbung

Hier könnte Ihre Werbung stehen! Jetzt informieren...


Stand der Informationen: August 2021
Wichtig: Bitte beachten Sie die Nutzungsbedingungen und rechtlichen Hinweise für diesen Beitrag!