【问题标题】:Mass delete unpopular Tags批量删除不受欢迎的标签
【发布时间】:2010-12-27 16:04:35
【问题描述】:

批量删除不受欢迎的标签

我有 1000 个标签,我想简单地删除所有未使用超过 X 次的标签...即 5 次。

有没有人知道一个简单的方法来做到这一点?即使是直接的 SQL 也会完全摇滚!

【问题讨论】:

    标签: wordpress tags sql-delete


    【解决方案1】:

    使用 SQL 命令将是您最好的选择。表wp_termswp_term_relationshipswp_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;
    

    注意:我强烈建议在运行上述命令之前备份这些表。

    【讨论】:

    • @Riccardo。它应该是因为我不知道 3.1.3 中的任何架构更改。无论哪种方式,请注意我的 Note。 :)
    • 是的,我已执行备份并开始清理。 38,000 个标签被抹去!非常感谢!
    • @Riccardo。伟大的。如果你觉得这有帮助,你应该点赞。
    • 顺便说一句,我在下面看到 Kolchy 的评论。我不得不将“标签”更改为“post_tag”
    【解决方案2】:

    请务必先备份数据库

    DELETE a,c FROM wp_terms AS a
    LEFT JOIN wp_term_taxonomy AS c ON a.term_id = c.term_id
    LEFT JOIN wp_term_relationships AS b on b.term_taxonomy_id = c.term_taxonomy_id
    WHERE ( c.taxonomy = 'post_tag' AND c.count <= 5 );
    

    在最后一行,您还可以修改 c.count &lt;= 5 并将 5 替换为您选择的任意数字。

    【讨论】:

      【解决方案3】:

      Jasons 的答案在我的安装中有效,分类的名称是“post_tag”而不是“tag”

      【讨论】:

      • 最好的做法是对答案发表评论并在它对您有用的情况下进行投票,而不是提供单独的答案。
      【解决方案4】:
      $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);
          }
      }
      

      有更有效的方法可以做到这一点,但这样就可以了。

      编辑:首先进行备份。我不完全确定该表是标签独有的。

      【讨论】:

      • 太棒了,非常感谢您的超快速响应...我现在就试一试。再次感谢
      • 我想你会想用 Jason McCreary 的例子来改变我的代码(或者只是运行查询看看会发生什么)。看起来您需要删除三层而不是只从一个数据库中删除行。
      • 您可以仅从wp_terms 中删除,但如果您添加另一个同名标签,则会导致数据完整性不佳和问题。
      猜你喜欢
      • 2012-03-24
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      相关资源
      最近更新 更多