In letzter Zeit habe ich viel mit WordPress als CMS gearbeitet und bin dabei auf viele nützliche SQL Statements gestoßen, die einem das Leben erleichtern und/oder einiges an Zeit einsparen.

Die nachfolgenden WordPress SQL Snippets sind Statements, die entweder direkt via MySQL ausgeführt werden können.

Ein wichtiger Hinweis noch vorweg: Denkt an ein Backup eurer Datenbank bevor ihr die SQL-Statements ausführt!

1. absolute URLs im Content ersetzen

UPDATE wp_posts 
SET post_content = REPLACE (post_content, 'http://www.altedomain.de', 'http://www.blogrammierer.de');

Dieses SQL Statement kann direkt in PHPMyAdmin, dem MySQL-Backend, ausgeführt. Es ist hilfreich, wenn ihr eine lokale Testumgebung auf einen Webspace geladen habt und unter einer Domain erreichbar machen wollt oder sich die Domain geändert hat.

Einfach die entsprechenden URLs anpassen und alle Links, die ihr innerhalb eines Artikels eingefügt habt, werden auf die neue URL gesetzt.

2. absolute URLs in benutzerdefinierten Feldern ersetzen

UPDATE wp_postmeta 
SET meta_value = REPLACE (meta_value, 'http://www.oldsiteurl.com','http://www.newsiteurl.com');

Dieses Statement ähnelt dem vorherigen Statement sehr, da auch hier URL-Pfade ersetzt werden. Mit Hilfe des obenstehenden Statements werden alle benutzerdefinierten Felder aktualisiert.

Solltet ihr in den Custom Fields URL-Pfade verwenden und auf eine neue/andere Domain umsteigen, ist dieses SQL-Statement genau das richtige.

3. Revisionen löschen

DELETE p,tr,pm FROM wp_posts p
  LEFT JOIN wp_postmeta pm ON (p.ID = pm.post_id)
  LEFT JOIN wp_term_relationships tr ON (p.ID = tr.object_id)
WHERE p.post_type = 'revision'

Im Laufe der Zeit entstehen viele Artikel in einem Blog. Nutzt man das WordPress Backend zum Schreiben der Artikel, werden, je nach Einstellungen, zahlreiche Revsionen/Zwischenspeicherungen vorgenommen.

Um diese überflüssigen Einträge in der Datenbank zu löschen, kann dieses SQL Snippet ausgeführt werden.

4. ungenutzte Tags finden

SELECT * From wp_terms t
  INNER JOIN wp_term_taxonomy tt ON t.term_id=tt.term_id 
WHERE tt.taxonomy='post_tag' 
 AND tt.count=0;

Da man WordPress nicht nur als reines Blogsystem verwenden kann, sondern auch für viele weitere/andere Anforderungen „verbiegen“ kann, ist es u.U. notwendig ungenutzte Tags zu finden.

Dieses SQL-Statement listet euch die ungenutzten Tags eurer WordPress Instanz auf.

5. Kommentare in alten Artikeln deaktivieren

UPDATE wp_posts 
 SET comment_status = 'closed' 
WHERE post_date < '2011-04-01' AND post_status = 'publish';

Um das Spam-Aufkommen in eurem Blog zu reduzieren, ist eine von vielen Möglichkeiten die Kommentarfunktion in alten Artikeln zu deaktivieren.

Das SQL Snippet bietet euch die Möglichkeit, die Kommentarfunktion bei Artikeln, die vor einem bestimmten Datum veröffentlich wurden, zu deaktivieren.

6. WordPress Backend Password zurücksetzen

UPDATE wp_users 
 SET user_pass = MD5('PASSWORT') 
WHERE user_login ='admin' LIMIT 1;

Um das Passwort eures Admin-Account zurückzusetzen solltet ihr dieses SQL-Statement ausführen. Es kann durchaus mal vorkommen, dass man das Admin-Passwort einer WordPress Instanz vergessen hat und darauf keinen Zugriff mehr hat. Mit Hilfe dieses Snippet solltet das Problem zu lösen sein.

7. Autor eines Artikels ändern

UPDATE wp_posts 
 SET post_author=NEUE_AUTOR_ID 
WHERE post_author=ALTE_AUTOR_ID;

Alle Artikel eines bestimmten Autors können mit diesem Statement einem neuen/anderen Autor zugewiesen sein. Dazu müssen lediglich die beiden IDs der Autoren bekannt sein und schon können alle Artikel des Autors A auf Autor B übertragen werden.

8. Alle Plugins auf einen Schlag deaktivieren

UPDATE wp_options 
 SET option_value = '' 
WHERE option_name = 'active_plugins';

Beim Testen und Ausprobieren von WordPress Plugins kann es schnell mal dazukommen, dass man sich selbst aussperrt, da ein Plugin gravierende Fehler hat. Um jetzt schnell alle Plugins zu deaktivieren kann obenstehendes Snippet verwendet werden.

9. Basis Blog-Url ändern

UPDATE `wp_options`
  SET option_value = 'http://www.blogrammierer.de/'
WHERE option_name = 'siteurl' or option_name = 'home';

Dieses Statement habe ich euch bereits im Artikel WordPress Blog als lokale Testumgebung mit XAMPP einrichten vorgestellt.

Dieses SQL-Snippet ändert die Basis-URLs eures Blogs und ist beim Einrichten einer Testumgebung oder beim Ändern der Domain eures Blogs wichtig. Nicht zu verwechseln mit der URL-Anpassung unter 1, da dort innerhalb des Contents die URLs ersetzt werden.

10. E-Mail aller Kommentatoren anzeigen

 
SELECT DISTINCT comment_author_email FROM wp_comments;

Das Statement listet euch alle E-Mail-Adressen der Kommentatoren in eurem Blog auf. Der DISTINCT-Parameter sorgt dafür, dass jede Adresse wirklich nur ein einziges Mal aufgelistet wird.

Das waren 10 WordPress SQL Snippets, ich hoffe, dass einige interessante Statements für euch dabei waren. Habt ihr selbst SQL-Statements die ihr im Zusammenhang mit Wordpres häufiger verwendet? Ich bin auf eure Kommentare gespannt.