Ein Search & Replace in der Datenbank wird verwendet, um an mehreren Stellen in nur einer Handlung Änderungen in der Datenbank durchzuführen. Häufig wird ein Search & Replace durchgeführt, wenn die Domain der Website geändert werden muss oder wenn eine Site in HTTPS angepasst wird. Während der Durchführung von Search & Replace wird in der Datenbank nach Textfragmenten gesucht, die dann durch einen neuen Text ersetzt werden. Ein Search & Replace ist ein starkes Mittel, um viele Änderungen durchzuführen, kann aber auch dafür sorgen, dass Ihre Website nicht mehr erreichbar ist. Aus diesem Grund empfehlen wir, über admin.savvii.nl ein Backup anzufertigen, ehe Sie beginnen. Sollte etwas schiefgehen, können Sie Ihre Datenbank jederzeit wiederherstellen, indem Sie das Back-up zurücksetzen.  


Um ein Search & Replace in Ihrer Datenbank durchzuführen, stehen mehrere Optionen zur Verfügung.

  1. Das Better Search & Replace Plugin
  2. Über WP-CLI (SSH)


Das Better Search & Replace Plugin

Das Plugin „Better Search & Replace“ ist die meist unkomplizierteste Art. Sollte Ihnen dieses nicht zusagen, stehen noch weitere Plugins mit derselben Funktionalität zur Verfügung. In untenstehender Anleitung werden wir eine Website von HTTP in HTTPS umstellen.


1. Installieren Sie das Plugin über Ihr WordPress Admin-Panel

2. Gehen Sie zu 'Werkzeuge' > 'Better Search & Replace'

3. Im untenstehenden Beispiel stellen wir die URLs einer imaginären Site (http://www.example.com) auf HTTPS (https://www.example.com) um. Tragen Sie die Daten, die Sie suchen und ersetzen möchten, ein und wählen Sie alle Tabellen aus. Ersetzen Sie nicht die GUIDs. Danach führen Sie einen ersten „dry-run“, also Probelauf, durch.



4. Nach diesem Probelauf kontrollieren Sie den Output.

5. Wenn dieser korrekt ist, entfernen Sie das Häkchen von „Run as dry run“ und führen Sie das Search & Replace tatsächlich durch.  

6. Danach ist unerlässlich, den Cache Ihrer Site vollständig zu leeren, um die Änderungen auch sehen zu können.


Achtung! Vermeiden Sie Fehler in Schritt 2. Berücksichtigen Sie Folgendes: Wenn Sie in Ihrer Datenbank beispielsweise „www.website.de“ in „https://www.website.de“ ändern, sehen die Links in der Datenbank so aus: 'http://https://www.website.de'. „Suche und ersetzen“ tauscht buchstäblich alles aus, was gefunden wird.  Sorgen Sie also dafür, dass der Geltungsbereich für Ihre Suchaktion stimmt und dass auch der Ersatz korrekt ist.


Über WP-CLI (SSH)


SSH Zugang ist nur bei VPS-Konten möglich (Beta-Version) und zu diesem Zeitpunkt nicht standardmäßig aktiviert. Wenn Sie an der Beta-Version teilnehmen möchten, erstellen Sie über support.savvii.nl ein Ticket. Ein Search & Replace können Sie durch den Einsatz von WP-CLI durchführen. In untenstehender Anleitung werden wir eine Website von HTTP in HTTPS ändern.


1. Gehen Sie zum Ordner /wordpress/current (cd /wordpress/current)

2. Der Befehl für das Search & Replace ist wp search-replace 'zuersetzenderteil' 'ersatz' --skip-columns=guid. Führen Sie erst einen dry-run (Probelauf) durch. Hierfür fügen Sie den Parameter --dry-run hinzu.


$ wp search-replace 'http://www.example.com' 'https://www.example.com' --skip-columns=guid --dry-run
+------------------+-----------------------+--------------+------+
| Table            | Column                | Replacements | Type |
+------------------+-----------------------+--------------+------+
| wp_commentmeta   | meta_key              | 0            | SQL  |
| wp_commentmeta   | meta_value            | 0            | PHP  |
| wp_comments      | comment_author        | 0            | SQL  |
| wp_comments      | comment_author_email  | 0            | SQL  |
| wp_comments      | comment_author_url    | 0            | SQL  |
| wp_comments      | comment_author_IP     | 0            | SQL  |
| wp_comments      | comment_content       | 0            | SQL  |
| wp_comments      | comment_approved      | 0            | SQL  |
| wp_comments      | comment_agent         | 0            | SQL  |
| wp_comments      | comment_type          | 0            | SQL  |
| wp_links         | link_url              | 0            | SQL  |
| wp_links         | link_name             | 0            | SQL  |
| wp_links         | link_image            | 0            | SQL  |
| wp_links         | link_target           | 0            | SQL  |
| wp_links         | link_description      | 0            | SQL  |
| wp_links         | link_visible          | 0            | SQL  |
| wp_links         | link_rel              | 0            | SQL  |
| wp_links         | link_notes            | 0            | SQL  |
| wp_links         | link_rss              | 0            | SQL  |
| wp_options       | option_name           | 0            | SQL  |
| wp_options       | option_value          | 1            | PHP  |
| wp_options       | autoload              | 0            | SQL  |
| wp_postmeta      | meta_key              | 0            | SQL  |
| wp_postmeta      | meta_value            | 0            | PHP  |
| wp_posts         | post_content          | 0            | SQL  |
| wp_posts         | post_title            | 0            | SQL  |
| wp_posts         | post_excerpt          | 0            | SQL  |
| wp_posts         | post_status           | 0            | SQL  |
| wp_posts         | comment_status        | 0            | SQL  |
| wp_posts         | ping_status           | 0            | SQL  |
| wp_posts         | post_password         | 0            | SQL  |
| wp_posts         | post_name             | 0            | SQL  |
| wp_posts         | to_ping               | 0            | SQL  |
| wp_posts         | pinged                | 0            | SQL  |
| wp_posts         | post_content_filtered | 0            | SQL  |
| wp_posts         | post_type             | 0            | SQL  |
| wp_posts         | post_mime_type        | 0            | SQL  |
| wp_term_taxonomy | taxonomy              | 0            | SQL  |
| wp_term_taxonomy | description           | 0            | SQL  |
| wp_termmeta      | meta_key              | 0            | SQL  |
| wp_termmeta      | meta_value            | 0            | SQL  |
| wp_terms         | name                  | 0            | SQL  |
| wp_terms         | slug                  | 0            | SQL  |
| wp_usermeta      | meta_key              | 0            | SQL  |
| wp_usermeta      | meta_value            | 0            | PHP  |
| wp_users         | user_login            | 0            | SQL  |
| wp_users         | user_nicename         | 0            | SQL  |
| wp_users         | user_email            | 0            | SQL  |
| wp_users         | user_url              | 0            | SQL  |
| wp_users         | user_activation_key   | 0            | SQL  |
| wp_users         | display_name          | 0            | SQL  |
+------------------+-----------------------+--------------+------+
Success: 1 replacement to be made.



3. Der dann erscheinende Output zeigt, in welcher Tabelle der Austausch stattfinden wird. Kontrollieren Sie, ob das korrekt ist oder ob der zu ersetzende Teil und der Ersatz wirklich korrekt sind.  

4. Danach führen Sie den Befehl ohne Parameter Probelauf durch. In diesem Beispiel wäre das also: wp search-replace 'http://www.example.com' 'https://www.example.com' --skip-columns=guid

5. Leeren Sie den gesamten Cache. Danach ist der Austausch auf der Site sichtbar.


Achtung! Vermeiden Sie Fehler in Schritt 4. Berücksichtigen Sie Folgendes: Wenn Sie in Ihrer Datenbank beispielsweise „www.website.de“ in „https://www.website.de“ ändern, sehen die Links in der Datenbank so aus: 'http://https://www.website.de'. „Suchen und ersetzen“ tauscht buchstäblich alles aus, was gefunden wird.  Sorgen Sie also dafür, dass der Geltungsbereich für Ihre Suchaktion stimmt und dass auch der Ersatz korrekt ist.