Anleitung: URLs und Domains per Suchen und Ersetzen in TablePress Tabellenzellen austauschen

Suchen und Ersetzen – in TablePress Tabellen eine besondere Herausforderung, die sich aber lösen läßt.

Wie manche Leser schon wissen, realisiere ich relativ viele Kundendomains mit dem CMS System WordPress. Und immer, wenn dort in einem Beitrag eine Tabelle eingebaut werden soll, gibt es nur ein Plugin, das die beste Wahl für diese Aufgabe ist: TablePress von Tobias Bäthge. An dieser Stelle ein großes Dankeschön dafür, dass er das Plugin für alle gratis zur Verfügung stellt. Das Plugin ist nicht nur sehr einfach zu bedienen und hat eine ansprechende Optik im Admin und in der Ausgabe der Tabellen sondern Tobias bietet auch einen hervorragenden Support. In der Regel hat man innerhalb von wenigen Stunden eine Antwort auf seine Frage.

Suchen und Ersetzen – in TablePress Tabellen eine besondere Herausforderung, die sich aber lösen läßt.

Suchen und Ersetzen – in TablePress Tabellen eine besondere Herausforderung, die sich aber lösen läßt.

Suchen und Ersetzen in WordPress

Und hier kommen wir schon zum nächsten genialen Plugin: "Suchen und Ersetzen" von der Inspyside GmbH. Während andere englischsprachige Plugins (wie zum Beispiel "Better Search and Replace") häufiger mal Ausfälle haben, wenn es um umfangreiche Datenbanken geht, arbeitet sich dieses Plugin fleissig durch alle Tabellen, die zu WordPress gehören und ersetzt dabei einen String durch einen anderen. Zwar hat das Plugin sogar ein extra Feature, um die WordPress-Domain zu ändern, falls man von einer Domain zu einer anderen umzieht, aber auch dieses Feature löst nicht das Problem, das ich beim Ändern von URLs in TablePress hatte.

Das Plugin "Suchen und Ersetzen" ist mein aktueller Liebling in dieser Plugin-Kategorie. Es funktioniert auch da noch, wo andere Plugins nicht mehr funktionieren.

Das Plugin "Suchen und Ersetzen" ist mein aktueller Liebling in dieser Plugin-Kategorie. Es funktioniert auch da noch, wo andere Plugins nicht mehr funktionieren.

Das Problem: URLs werden nicht gefunden und ersetzt

Im aktuellen Fall hatte ich einen Kunden, der etliche Tabellen in TablePress angelegt hatte, in denen wiederum sehr oft Bilder und Links mit URLs eingebaut waren. Leider hat das "Suchen und Ersetzen"-Plugin einige URLs nicht gefunden, die jedoch definitiv in den Tabellen vorhanden waren. Nach Rücksprache mit dem Programmierer von TablePress war das Problem lokalisiert: Die URLs werden in dem JSON-Format gespeichert und dadurch mit Backslashes auskommentiert. Das heißt, statt "https://www.sir-apfelot.de" wird in der Datenbank "http:\/\/www.sir-apfelot.de" gespeichert.

Durch diese Änderung ist nachvollziehbar, warum das Plugin die URL in manchen Fällen nicht findet. Damit das Plugin auch in TablePress erfolgreich wird, muss man also auch diese Schreibweise suchen und ersetzen.

Danach hatte ich allerdings immernoch einige URLs, die trotzdem nicht gefunden wurden. Um zu sehen, wo das Problem lag, habe ich direkt in der Datenbank nach gesehen und dort eine zusätzliche Schreibweise gefunden: eine doppelte Auskommentierung der Slashes. Also statt "https://www.sir-apfelot.de" stand dort "http:\\/\\/www.sir-apfelot.de".

Anleitung: So wird gesucht und gefunden!

Um alle URLs bzw. Domains zu finden, muss man also insgesamt drei Durchläufe mit dem Plugin machen und dabei diese drei Schreibweisen suchen und ersetzen:

  • https://www.sir-apfelot.de
  • http:\/\/www.sir-apfelot.de
  • http:\\/\\/www.sir-apfelot.de

Sicherheitsabfrage des Plugins verhindert das Ersetzen

Ein kleines Hindernis bietet das Plugin noch: Wenn man die URL des Blogs ersetzen möchte, indem das Plugin läuft, dann erkennt es dies und führt den Prozess nicht in der aktuellen Datenbank durch sondern bietet nur eine Kopie der Datenbank mit den gewünschten Änderungen als Download an.

Die zusätzliche Sicherheit ist ok, aber ich weiss, was ich tue und mag diesen Zwang nicht. Um die Sicherheitsabfrage auszuschalten, kann man im Quellcode des Plugins eine kleine Änderung vornehmen:

In der Datei /inc/Page/SearchReplace.php findet man in Zeile 245 folgenden Eintrag:

$contains_site_url = strpos( $search, $this->get_stripped_site_url() );

Diesen ersetzt man dadurch:

$contains_site_url = strpos( $search, "123".$this->get_stripped_site_url() );

 

Schon funktioniert

Sir Apfelot auf SteadyHQ unterstützen

1 Kommentar

  1. Hulle sagt:

    Weltklasse Tipp! Fettes Merci!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.