2010-12-27 5 views
1

Massen löschen unbeliebt StichworteMassen löschen unbeliebt Schlagwörter

Ich habe 1000 von Tags und ich möchte einfach alle Tags löschen, die nicht mehr verwendet werden, als X-mal ... das heißt 5-mal.

Kennt jemand eine einfache Möglichkeit, dies zu tun? Sogar straight SQL würde total ROCK!

Antwort

-1
$x = 5; // set this to any number 
$sql = "SELECT `name` FROM `wp_terms`"; 
$result = mysql_query($sql); 
$count = array(); 
while($row = mysql_fetch_assoc($result)) 
{ 
    $count[$name]++; 
} 
foreach($count as $key = $value) 
{ 
    if($value < $x) 
    { 
     $sql2 = "DELETE FROM `wp_terms` WHERE `name` = '". $key ."'"; 
     $result2 = mysql_query($sql2); 
    } 
} 

Es gibt effizientere Möglichkeiten, dies zu tun, aber dies wird die Aufgabe erfüllen.

Bearbeiten: Erstellen Sie zuerst eine Sicherung. Ich bin nicht ganz sicher, dass diese Tabelle nur für Tags gilt.

+0

Erstaunlich, vielen Dank für die super schnelle Antworten ... Ich werde sie auszuprobieren jetzt. Nochmals vielen Dank –

+0

Ich denke, Sie wollen Jason McCreary Beispiel verwenden, um meinen Code zu ändern (oder einfach die Abfragen ausführen und sehen, was passiert). Es sieht so aus, als müssten Sie die Zeilen in drei Ebenen löschen und nicht nur in einer Datenbank. – Citizen

+0

können Sie nur aus 'wp_terms' löschen, aber Sie haben schlechte Datenintegrität und Probleme, wenn Sie ein anderes Tag mit demselben Namen hinzugefügt haben. –

2

Mit einem SQL-Befehl zu tun ist Ihre beste Wette. Die Tabellen wp_terms, wp_term_relationships und wp_term_taxonomy sind von Interesse. WordPress verfolgt Beziehungen mit wp_term_taxonomy.count. Diese Hilfe erleichtert das Leben.

-- remove terms 
DELETE FROM wp_terms WHERE term_id IN (SELECT term_id FROM wp_term_taxonomy WHERE taxonomy = 'tag' AND count <= 5;) 
-- remove all relationships 
DELETE FROM wp_term_relationships WHERE term_taxonomy_id IN (SELECT term_taxonomy_id FROM wp_term_taxonomy WHERE taxonomy = 'tag' AND count <= 5;) 
-- remove taxonomy entry 
DELETE FROM wp_term_taxonomy WHERE taxonomy = 'tag' AND count <= 5; 

Hinweis: würde ich dringend empfehlen eine Sicherung dieser Tabellen zu machen, bevor die Befehle oben ausgeführt wird.

+0

Jason, wird das auch auf WP 3.1.3 funktionieren? – Riccardo

+0

@ Riccardo. Es sollte mir keine Schemaänderungen in 3.1.3 bekannt sein. So oder so notieren Sie meine ** Note **. :) –

+0

Ja, ich habe ein Backup durchgeführt und angefangen zu bereinigen. 38.000 Tags wurden weggewischt! Danke vielmals! – Riccardo

0

Jasons Antwort gearbeitet, außer in meinem installieren, der Name der Taxonomie war ‚post_tag‘ nicht ‚Tag‘

+0

Es ist die beste Vorgehensweise, die Antwort und die Upvote zu kommentieren, wenn es für Sie funktioniert, anstatt eine separate Antwort zu liefern. –