SQL Befehl zum Ersetzen in der DB
-
Ich bräuchte mal Eure Hilfe. Gibt es MySQL Spezialisten unter Euch? 🙂
Ich habe in WordPress in meinen Beiträgen für meine Überschriften auf Grund des Themes bisher einen Shotcode genutzt:
[x_custom_headline type="left" level="h2" looks_like="h3"]Hier steht eine Überschrift[/x_custom_headline]
Das ist natlich völlig überflüssig und ich möchte es gerne durch ein simples h2 ersetzen:
<h2>Hier steht eine Überschrift</h2>
Jetzt habe ich über 1.000 Beiträge in meinem Blog und das alles händisch anzupassen dauert Wochen.
Daher suche ich nach einer Möglichkeit, dass per MySQL direkt in der Datenbank zu ändern. Generell habe ich dafür auch schon den passenden SQL Befehl gefunden:
UPDATE wp_posts SET post_content = REPLACE( REPLACE(post_content, '[x_custom_headline type="left" level="h2" looks_like="h3"]', '<h2>'), '[/x_custom_headline]','</h2>') WHERE post_content LIKE '%[/x_custom_headline]%';
Das klappt auch soweit. Das Problem dabei: ich habe 2 verschiedene Headlines:
[x_custom_headline type=“left“ level=“h2″ looks_like=“h3″]Hier steht eine Überschrift[/x_custom_headline]
[x_custom_headline type=“left“ level=“h3″ looks_like=“h7″]Hier steht eine Überschrift[/x_custom_headline]Die erste Überschrift müsste mit <h2>…</h2> und die zweite mit <h3>…</h3> ersetzt werden.
Mit der aktuellen Abfrage wird der vordere Teil der 2. Headline ([x_custom_headline type=“left“ level=“h3″ looks_like=“h7″]) nicht ersetzt, aber der hintere Teil [/x_custom_headline] ebenfalls durch ein <h2>, was an der Stelle dann falsch ist. Hier müsste ja ein <h3> stehen.
Kann man die Anfrage so erweiteren, dass man diese Logik noch mit aufnimmt?
Ich hatte mal versucht die Anfrage so umzubauen, dass er nur die Zeilen mit dem looks_like=“h3″ ersetzt:
UPDATE wp_posts SET post_content = REPLACE( REPLACE(post_content, '[x_custom_headline type="left" level="h2" looks_like="h3"]', '<h2>'), '[/x_custom_headline]','</h2>') WHERE post_content LIKE '%[x_custom_headline type="left" level="h2" looks_like="h3"]%';
…aber auch das ersetzt mir immer das [/x_custom_headline] zu <h2>, auch bei der looks_like=“h7″ Zeile.
Ich dachte durch die WHERE Bedingung ist das Begrenzt auf alle Datensätze, die mit [x_custom_headline type=“left“ level=“h2″ looks_like=“h3″] beginnen. Aber da hab ich von der SQL Logik wohl noch einen Denkfehler…
Kann da jemand helfen?
- Dieses Thema wurde geändert vor 2 Jahren, 1 Monat von .
- Dieses Thema wurde geändert vor 2 Jahren, 1 Monat von .
Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]
- Das Thema „SQL Befehl zum Ersetzen in der DB“ ist für neue Antworten geschlossen.