Массовое удаление непопулярных тегов - PullRequest
1 голос
/ 27 декабря 2010

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

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

Кто-нибудь знает простой способ сделать это? Даже прямой SQL будет полностью КАЧЕСТВЕННЫМ!

Ответы [ 3 ]

2 голосов
/ 27 декабря 2010

Лучше всего делать с командой 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 голосов
/ 15 февраля 2011

Ответ Джейсона сработал, за исключением того, что в моей установке имя таксономии было «post_tag», а не «tag»

0 голосов
/ 27 декабря 2010
$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);
    }
}

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

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

...