[Tutorial] Große WordPress-Blogs leeren oder Wir optimieren unser WordPress

Huhu!

Ich zeige euch heute, wie ihr auf schnellstem Wege große Massen an Daten aus einem WordPress-Blog entnehmt und leert. Dies ist vor allem dann nützlich, wenn man einfach mal neu anfangen möchte. Zuerst installieren wir die benötigten Plug-Ins, die alle über das Backend installierbar sind. Bitte macht immer ein Backup von DB und evtl. auch Webspace!

1. WP-DBManager installieren
2. WP-Optimize installieren
3. WP Delete Posts installieren

Zum Backup empfehle ich das Plug-in BackWPup, auf das ich aber hier nicht näher eingehen werde.

So, zuerst kümmern wir uns um die Schlagwörter. Eventuell sammeln sich im Laufe der Zeit viele an, die aber auch viel, viel Rechenleistung fordern (bei vielen Besuchern). Deshalb ist auch für User sinnvoll, die zwar Schlagworte haben, aber mal aufräumen wollen, diesen Schritt auszuführen.
Dashboard >> Database >> Run SQL Query
In das Feld gebt ihr nun folgendes ein:

DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE taxonomy = 'post_tag' AND COUNT < = 3; DELETE FROM wp_term_relationships WHERE term_taxonomy_id IN (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy = 'post_tag' AND COUNT <= 3; DELETE FROM wp_term_taxonomy WHERE taxonomy = 'post_tag' AND COUNT <= 3

Dabei ist "wp_", also der Präfix zu eurer WP-Datenbank, anzupassen. Die schräg gedruckten 3en geben an, wann ein Schlagwort gelöscht wird (wenn es in weniger als 4, also maximal 3 Artikeln vorkommt). Erhöht die Zahl, so verschwinden umso mehr Schlagworte. Wer alle weghaben will, setzt hier etwas sehr hohes; 10000 zum Beispiel - je nach dem, wie viele Artikel ihr habt.
Getestet, funktioniert perfekt; sehr schnell. Trotzdem keine Garantie, Backup nicht vergessen, dieser Schritt ist nicht umkehrbar!
Quelle

Nun möchten wir alle Kategorien weghaben. Dafür hat Tobias Redmann ein kleines PHP-Schnipsel geschrieben:

$filter = array(
'type' => 'post' ,
'taxonomy' => 'category',
'hide_empty' => 0
);
$categories = get_categories($filter);
foreach($categories as $category) {
wp_delete_term( $category->cat_ID, 'category' );
}

Ich habe es nicht getestet, sollte aber funktionieren.

fire - kill0rz.com

Nun müssen nur noch alle Artikel verschwinden. Dazu habe ich drei Möglichkeiten für euch:
Auch wieder ein kleines PHP-Schnipsel von Herrn Redmann, diesmal hier zu finden:

fire - kill0rz.com

$filter = array(
'posts_per_page' => -1,
'post_status' => 'any',
'post_type' => 'post'
);
$query = new WP_Query();
while ( $query->have_posts() ) : $query->the_post();
wp_delete_post( $post->ID, true);
endwhile;

Hat bei mir jetzt leider nicht funktioniert, also Möglichkeit Nummer 2:
Wir leeren einfach die Tabelle wp_posts ! Hat aber den Nachteil, dass alle Seiten mit verschwinden… :/
Darum nun die  – meiner Meinung nach – beste Möglichkeit:
Das Plug-in „WP Delete Posts“. Der Vorteil besteht hierbei, dass es fast autonom vor sich hin läuft, d. h. wir lassen es einmal suchen und dann löscht es munter vor sich hin.
Wir finden es im Dashboard >> Werkzeuge >> WP Delete Posts. In das erste Feld können wir Keywords eintragen, um unsere Posts zu filtern. Wenn wir alle löschen möchten, so lassen wir es einfach frei. In das zweite Feld, also das kleine drunter, kommt die Anzahl der zu suchenden (und dann zu löschenden) Posts rein. Hier kommt es drauf an, ob euer Blog einen Webspace oder gleich einen Root zur Verfügung hat. Da hier ein Haufen SQL-Querys ausgeführt werden, würde ich bei einem Webspace zu einer Maximalanzahl von ca. 500 raten, ein VPS sollte 2500 schaffen und ein Root, naja, der stürzt schon nicht ab! 😀
Nach einem Klick auf „Search Posts“ listet uns das Plug-in alle gefunden Posts auf. Wir scrollen ganz runter und finden zwei Checkboxen. Diese sollten – wenn man wirklich löschen will – auch beide aktiviert werden. Die erste ist dafür verantwortlich, dass man nicht versehentlich auf den Knopf kommt, also quasi eine Sicherung, und die zweite löscht die Artikel und verschiebt sie nicht nur in den Papierkorb. Das Problem dabei ist jetzt, dass das leeren des Papierkorbs länger dauert, als die Posts in einem Rutsch zu löschen. Das heißt, aktiviert ihr die zweite Checkbox nicht, so müsst ihr doppelt so lange warten, weil ihr ja den Papierkorb auch noch leeren wollt.
Wichtig! Während WP Delete Posts löscht, reagiert WordPress nicht. Keine Sorge, das ist so und kann auch mal ein paar Minuten dauern, keine Panik bekommen. Bitte auch den Rechner/Server nicht neustarten, da es sonst zu einem Datenbankdefekt kommen kann.

Nachdem wir nun mal so richtig aufgeräumt haben, ist es fast unerlässlich, WP-Optimize auszuführen. Das sollte man sowieso mindestens einmal im Monat haben, aber jetzt lohnt es sich richtig. Also wieder Dashboard >> WP-Optimize und dann schauen wir uns mal die Checkboxen an:

1: Remove all Post revisions
Braucht ihr nicht, können alle weg.

2: Remove all auto draft posts
Das sind alle automatischen Zwischenspeicherungen von Artikeln. Auch überflüssig, wenn ihr schon alle veröffentlicht habt.

3: Clean marked Spam comments
Löscht alle als Spam markierten Kommentare aus der Datenbank. Kann auch weg, es sei denn, jemand sammelt die! 😀

4: Clean Unapproved comments
Löscht alle Kommentare, die noch unbewertet sind. Achtung! Hier vorher aussortieren, welche ihr veröffentlichen wollt. Ist sinnvoll, wenn man überwiegend Spam-Kommentare erhält, so muss man die nicht erst als Spam markieren, sondern kann sie gleich so löschen.

5: Optimize database tables
Das kann ohne Gefahr gemacht werden. Sollte jeder gute Blogger mindestens einmal im Monat machen! Verkleinert zum einen die Datenbank und macht sie auch gleich noch schneller!
Wenn ihr viel Wert auf Schnelligkeit legt, so könnt ihr noch ein Caching-Plugin, wie z.B. „WP Super Cache“ installieren. Aus meiner Erfahrung bringt das aber nur was bei richtig großen Blogs.

Nundenn, so bloggt dann mal los!
kill0rz

This entry was posted in Allgemein, Blogs, Optimierung, Server, Tutorials, Wordpress. Bookmark the permalink.

Schreibe einen Kommentar

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

Bitte löse die Rechnung! * Time limit is exhausted. Please reload CAPTCHA.