WordPress kann zwar recht gut über das Backend verwaltet werden. Doch immer dann wenn viele Änderungen gleichzeitig durchgeführt werden müssen, kommt man über den Admin-Bereich nicht immer weiter und es ist komfortabler über die SQL Datenbank die entsprechenden Befehle zu geben. Hier in dieser Übersicht habe ich SQL Commands zusammen getragen, welcher ein Hardcore WordPress Administrator früher oder später zumindest in Auszügen benötigen wird.
Ich habe die Befehle für mich in einem Textfile zusammen geschrieben und den Befehlsumfang immer dann ergänzt, wenn ich wieder vor einem Problem stand, welches gelöst werden musste. Ich habe zwar versucht zumindest eine grobe Struktur in die Befehle hinein zu bringen, doch immer ist mir das nicht gelungen, bzw. ist dies auch nicht immer möglich, da es Befehle gibt, welche einfach in unterschiedlichen Rubriken eingeordnet werden können. Aber ich denke, wenn ihr diesen Beitrag über Google und Co gefunden habt, wisst ihr eh nach was ihr sucht und ich vermute einmal schwer, ihr werdet hier fündig werden.
Dann wünsche ich Euch viel Erfolg bei der Umsetzung Eurer Vorhaben und stelle meine Liste hier einfach direkt und ohne viele Erklärungen online.
Ach ja, noch eine Kleinigkeit möchte ich erwähnen:
Backup nicht vergessen!
Führt bitte nie Änderungen an der Datenbank durch, wenn diese nicht zuvor über ein Backup gesichert wurde. Folgende SQL Befehle sind endgültig und lassen sich nicht mehr rückgängig machen.
URL der Seite ändern
Seiten und Home URL anpassen:
UPDATE wp_options SET option_value = replace(option_value, ‚http://www.altedomain.com‘, ‚http://www.neuedomain.com‘) WHERE option_name = ‚home‘ OR option_name = 'siteurl‘;
GUID Feld anpassen:
UPDATE wp_posts SET guid = REPLACE (guid, ‚http://www.altedomain.com‘, ‚http://www.neuedomain.com‘);
URL im Content ändern:
UPDATE wp_posts SET post_content = REPLACE (post_content, ‚http://www.altedomain.com‘, ‚http://www.neuedomain.com‘);
Bilderpfad ändern
z.B. für die Umstellung zum Contentprovider
Globale Anpassung:
UPDATE wp_posts SET post_content = REPLACE (post_content, 'src=“http://www.altedomain.com‘, 'src=“http://cdn.neuedomain.com‘);
GUID für die Bilder anpassen:
UPDATE wp_posts SET guid = REPLACE (guid, ‚http://www.altedomain.com‘, ‚http://cdn.neuedomain.com‘) WHERE post_type = ‚attachment‘;
Globale Administration
Username des „Admin“-Users ändern
UPDATE wp_users SET user_login = ‚Your New Username‘ WHERE user_login = ‚Admin‘;
Passwort zurück setzen
UPDATE wp_users SET user_pass = MD5( 'neues_passwort‘ ) WHERE user_login = ‚für-username‘;
Artikel und Seiten
Artikel von einem Author zum anderen Author übertragen
Author ID heraus finden
SELECT ID, display_name FROM wp_users;
UPDATE wp_posts SET post_author = 'neue-author-id‘ WHERE post_author = ‚alte-author-id‘;
Beitrags Meta Daten anpassen
UPDATE wp_postmeta SET meta_value = REPLACE (meta_value, ‚http://www.oldsiteurl.com‘,'http://www.newsiteurl.com‘);
Suchen und Ersetzen
UPDATE wp_posts SET `post_content`
= REPLACE (`post_content`,
‚OriginalText‘,
‚NeuerText‘);
Revisionen löschen
DELETE a,b,c FROM wp_posts a
LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id)
LEFT JOIN wp_postmeta c ON (a.ID = c.post_id)
WHERE a.post_type = ‚revision‘
Alternativ:
DELETE FROM wp_posts WHERE post_type = „revision“;
Eigenes Feld zu Artikel und Seiten hinzufügen
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID AS post_id, ‚UniversalCustomField‘
AS meta_key ‚MyValue AS meta_value FROM wp_posts
WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = ‚UniversalCustomField‘);
Eigenes Feld für Artikel
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID AS post_id, ‚UniversalCustomField‘
AS meta_key ‚MyValue AS meta_value
FROM wp_posts WHERE ID NOT IN
(SELECT post_id FROM wp_postmeta WHERE meta_key = ‚UniversalCustomField‘)
„ AND post_type = ‚post‘;
Eigenes Feld für Seiten
INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID AS post_id, ‚UniversalCustomField‘
AS meta_key ‚MyValue AS meta_value
FROM wp_posts WHERE ID NOT IN
(SELECT post_id FROM wp_postmeta WHERE meta_key = ‚UniversalCustomField‘)
AND `post_type` = ‚page‘;
Alte Artikel finden
SELECT * FROM `wp_posts`
WHERE `post_type` = ‚post‘
AND DATEDIFF(NOW(), `post_date`) > X
Alte Artikel löschen
DELETE FROM `wp_posts`
WHERE `post_type` = ‚post‘
AND DATEDIFF(NOW(), `post_date`) > X
Für X die gewünschten Tage setzen!
Artikel zu Seiten umwandeln
UPDATE wp_posts SET post_type = ‚page‘ WHERE post_type = ‚post‘
Seiten zu Artikel umwandeln
UPDATE wp_posts SET post_type = ‚post‘ WHERE post_type = ‚page‘
Kommentare:
Alle Ersteller-URLs entfernen. Ausgenommen von Pingbacks und Trackbacks:
UPDATE s9sp692er_comments SET comment_author_url = “ WHERE comment_type NOT IN (‚pingback‘, ‚trackback‘);
Alle Pingbacks löschen
DELETE FROM wp_comments WHERE comment_type = ‚pingback‘;
Alle Trackbacks löschen
DELETE FROM wp_comments WHERE comment_type = ‚trackback‘;
Alle Spam Kommentare löschen
DELETE FROM wp_comments WHERE comment_approved = 'spam‘;
„spam“ könnt ihr ersetzen durch:
0 –> löscht alle Kommentare die Moderation erwarten
1 –> bestätigte Kommentare
Akismet Einträge aus der Comments Meta löschen:
DELETE FROM wp_commentmeta WHERE meta_key LIKE ‚%akismet%‘;
Emailadresse von Kommentaren heraus ziehen – ohne Duplikate
SELECT DISTINCT comment_author_email FROM wp_comments;
Kommentare deaktivieren ab einem bestimmten Datum
UPDATE wp_posts SET comment_status = ‚closed‘ WHERE post_date < ‚2010-01-01‘ AND post_status = ‚publish‘;
Pingbacks / Tracksback global erlauben
UPDATE wp_posts SET ping_status = ‚open‘;
Pingbacks / Trackbacks global verbieten
UPDATE wp_posts SET ping_status = ‚closed‘;
Pingback / Trackbacks ab einem bestimmten Datum erlauben
UPDATE wp_posts SET ping_status = ‚closed‘ WHERE post_date < ‚2010-01-01‘ AND post_status = ‚publish‘;
Kommentare mit einer bestimmten URL löschen
DELETE from wp_comments WHERE comment_author_url LIKE „%spamurl%“ ;
Checken woher Spam kommt
SELECT `comment_author_IP`, COUNT(*) AS amount
FROM `wp_comments`
WHERE `comment_approved` = 'spam‘
GROUP BY `comment_author_IP`
HAVING amount > 10
ORDER BY amount DESC
LIMIT 0, 30
Die IP Adressen werden ausgegeben. Diese kann man über einen Eintrag in der .htaccess speren:
# IP block list
order allow,deny
deny from 173.242.120.58
allow from all
Tags
Nicht aktive Tags / nicht verknüpfte Tags anzeigen lassen
SELECT * From wp_terms wt
INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag‘ AND wtt.count=0;
Alle nicht genutzten Tags löschen
DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE count = 0 );
DELETE FROM wp_term_taxonomy WHERE term_id not IN (SELECT term_id FROM wp_terms);
DELETE FROM wp_term_relationships WHERE term_taxonomy_id not IN (SELECT term_taxonomy_id FROM wp_term_taxonomy);
Plugins
Alle Plugins deaktivieren
UPDATE wp_options SET option_value = ‚a:0:{}‘ WHERE option_name = ‚active_plugins‘;
Bilder
Bild-URLs austauchen
UPDATE wp_posts
SET post_content = REPLACE (post_content, 'src=”http://www.altedomain.com‘, 'src=”http://www.neuedomain.com‘);
Umzug einer WordPress installation:
UPDATE wp_posts SET guid = replace(guid, ‚http://olddomain.com‘,'http://newdomain.com‘);
UPDATE wp_posts SET post_content = replace(post_content, ‚http://olddomain.com‘, ‚http://newdomain.com‘);
UPDATE wp_links SET link_url = replace(link_url, ‚http://olddomain.com‘, ‚http://newdomain.com‘);
UPDATE wp_links SET link_image = replace(link_image, ‚http://olddomain.com‘, ‚http://newdomain.com‘);
UPDATE wp_postmeta SET meta_value = replace(meta_value, ‚http://olddomain.com‘, ‚http://newdomain.com‘);
UPDATE wp_usermeta SET meta_value = replace(meta_value, ‚http://olddomain.com‘, ‚http://newdomain.com‘);
WordPress aufräumen
Alle Post Meta Daten löschen:
DELETE FROM wp_postmeta WHERE meta_key = ‚der-meta-key‘;
WP Options Table bereinigen
DELETE FROM `wp_options` WHERE `option_name` LIKE (‚%_transient_%‘)
SEO
NoFollow Links anzeigen
SELECT * FROM wp_posts WHERE (
post_content LIKE ‚% rel=“nofollow“%‘
OR post_content LIKE ‚% nofollow%‘
OR post_content LIKE ‚%nofollow %‘
);
NoFollow entfernen:
UPDATE wp_posts SET post_content = REPLACE ( post_content, 'nofollow ‚, “ );
UPDATE wp_posts SET post_content = REPLACE ( post_content, ‚ nofollow‘, “ );
UPDATE wp_posts SET post_content = REPLACE ( post_content, ‚ rel=“nofollow“‚, “ );
Feeds
Feed Cache löschen
DELETE FROM `wp_options` WHERE `option_name` LIKE (‚_transient%_feed_%‘);
Sonstiges:
Neuen Admin User erstellen:
SET @user_login := ‚your_username‘;
SET @user_pass := ‚Pa$$word‘;
SET @user_email := ‚you@email.com<script cf-hash=“f9e31″ type=“text/javascript“>
/* <![CDATA[ */!function(){try{var t=“currentScript“in document?document.currentScript:function(){for(var t=document.getElementsByTagName(„script“),e=t.length;e–;)if(t[e].getAttribute(„cf-hash“))return t[e]}();if(t&&t.previousSibling){var e,r,n,i,c=t.previousSibling,a=c.getAttribute(„data-cfemail“);if(a){for(e=““,r=parseInt(a.substr(0,2),16),n=2;a.length-n;n+=2)i=parseInt(a.substr(n,2),16)^r,e+=String.fromCharCode(i);e=document.createTextNode(e),c.parentNode.replaceChild(e,c)}}}catch(u){}}();/* ]]> */</script>‘;
INSERT INTO `wp_users`
(`user_login`, `user_pass`, `user_email`, `user_registered`)
VALUES
(@user_login, MD5(@user_pass), @user_email, now());
SELECT @user_id := LAST_INSERT_ID();
INSERT INTO `wp_usermeta`
(`user_id`, `meta_key`, `meta_value`)
VALUES
(@user_id, ‚wp_capabilities‘, ‚a:1:{s:13:“administrator“;b:1;}‘);
INSERT INTO `wp_usermeta`
(`user_id`, `meta_key`, `meta_value`)
VALUES
(@user_id, ‚wp_user_level‘, '10‘);
Datenbank Prefix ändern:
RENAME table `wp_commentmeta` TO `neuerprefix_commentmeta`;
….dies mit allen Tabellen machen
Um die Verknüpfungen innerhalb der Tabellen anzugleichen führt ihr folgendes SQL Statement aus:
SELECT * FROM `newprefix_options` WHERE `option_name` LIKE ‚%wp_%‘;
SELECT * FROM `newprefix_usermeta` WHERE `meta_key` LIKE ‚%wp_%‘;
Dann werden Euch einige Ergebnisse angezeigt. Diese müssen per Hand angepasst werden.
Falscher Artikel Zähler anpassen
UPDATE wordpress.wp_posts wpp
LEFT JOIN
(SELECT comment_post_id AS c_post_id, count(*) AS cnt FROM wordpress.wp_comments
WHERE comment_approved = 1 GROUP BY comment_post_id) wpc
ON wpp.id=wpc.c_post_id
SET wpp.comment_count=wpc.cnt
WHERE wpp.post_type IN (‚post‘, ‚page‘)
AND (wpp.comment_count!=wpc.cnt OR (wpp.comment_count != 0 AND wpc.cnt IS NULL));
Tags:
- Übersicht der SQL Befehle