2010-12-27 3 views
1

Массовое удаление непопулярных ТегиМассовое удаление непопулярных Теги

У меня есть 1000-тегов, и я хотел бы просто удалить все теги, которые не используются больше, чем Х раз ... то есть в 5 раз.

Кто-нибудь знает простой способ сделать это? Даже прямой SQL будет полностью ROCK!

ответ

-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); 
    } 
} 

Есть более эффективные способы сделать это, но это сделает эту работу.

Редактировать: сначала сделать резервную копию. Я не совсем уверен, что эта таблица является эксклюзивной для тегов.

+0

Удивительно, спасибо за супер быстрый ответ ... Я дам им попробовать прямо сейчас. Еще раз спасибо –

+0

Я думаю, вы захотите использовать пример Джейсона Маккрири, чтобы изменить мой код (или просто запустите запросы и посмотрите, что произойдет). Похоже, вам нужно удалить строки из трех уровней, а не только из одной базы данных. – Citizen

+0

вы можете удалить только из 'wp_terms', но у вас будет плохая целостность данных и проблемы, если вы добавите еще один тег с тем же именем. –

2

Выполнение с помощью команды SQL будет вашим лучшим выбором. Таблицы wp_terms, wp_term_relationships и wp_term_taxonomy являются представляющими интерес. WordPress отслеживает отношения с wp_term_taxonomy.count. Таким образом, эта помощь облегчает жизнь.

-- 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; 

Примечание: я настоятельно рекомендую сделать резервную копию этих таблиц перед выполнением команды выше.

+0

Джейсон, будет ли это работать и на WP 3.1.3? – Riccardo

+0

@ Riccardo. Это должно быть, поскольку я не знаю никаких изменений схемы в 3.1.3. В любом случае обратите внимание на мою ** Примечание **. :) –

+0

Да, я выполнил резервную копию и начал очищать. 38 000 тегов уничтожены! Большое спасибо! – Riccardo

0

Jasons ответ работал только в моей установке, имя систематике был «post_tag» не «Тег»

+0

. Лучше всего прокомментировать ответ и повысить, если он сработает для вас, а не для предоставления отдельного ответа. –

Смежные вопросы