【问题标题】:Tag all Wordpress posts标记所有 Wordpress 帖子
【发布时间】:2014-01-03 10:57:30
【问题描述】:

我一直在寻找几个小时,无论是插件还是一些看起来安全的 SQL 来执行此操作,但似乎没有什么是我真正需要的......

我有一个包含大约 32,000 个帖子的 Wordpress 网站,我们使用各种标签来帮助管理后端(即它们在前端不可见或用于 SEO,在任何人使用过多的相同的标签)。这些帖子中约有 30,000 个包含标签“新”,但我们现在需要标记剩余的约 2,000 个以匹配。

WP 管理面板并不能真正胜任这项任务 - 需要几天的时间才能完成并将标签应用于 2,000 个帖子。似乎存在各种插件,但它们并没有真正做到他们在描述中声称的那样。我能找到的唯一似乎有用的 SQL 假设标签是新的,并且我想将它应用于单个类别中的所有帖子。我想我可以删除现有的标签(同样,Wordpress 的管理面板不是一个有趣的任务 - 它通常在大约 30 个帖子后崩溃,这意味着有人必须一遍又一遍地点击按钮),然后运行 ​​SQL 来应用新的。

有人能指点我正确的方向吗?

【问题讨论】:

    标签: wordpress tags


    【解决方案1】:

    您可以对所有帖子运行循环并使用wp_set_object_terms() 添加所需的标签:

    http://codex.wordpress.org/Function_Reference/wp_set_object_terms

    【讨论】:

    • 我们最终使用了一个插件,该插件按内容标记所有帖子(我们使用字母“a”,因为所有帖子都会包含它)然后将此标签重命名为“新”并删除旧的。但正如预期的那样,由于 WP 的脚本每隔几分钟就会死掉一次,因此删除旧标签需要花费数小时。如果我有时间编写它,您的循环想法会更好。遗憾的是没有任何合适的插件或机制。也许你应该建立一个;-)。
    【解决方案2】:

    我今天也遇到了这个问题。我用以下 SQL 标记了我所有的帖子。 (将<prefix> 替换为您的数据库前缀,将"GlobalTag" 替换为您想要的标签名称。)

    # create a term which will be your new tag
    INSERT INTO <prefix>_terms (name, slug) VALUES ("GlobalTag", "global-tag")
    
    # this is what defines the term as a Tag vs Category vs Video Category, etc
    # only do this if you are creating the category through SQL, not the GUI
    INSERT INTO <prefix>_term_taxonomy (term_id, taxonomy, count)
    SELECT
      (SELECT term_id from <prefix>_terms AS term WHERE term.name="GlobalTag") as "term_id",
      "tag" as "taxonomy",
      (SELECT COUNT(*) FROM <prefix>_posts AS posts WHERE (posts.post_status IN ("publish", "draft")) AND LENGTH(post_content) > 25) as "count"
    
    # now tag every post with GlobalTag
    INSERT INTO <prefix>_term_relationships
    SELECT
      id as "object_id",
      (
        SELECT term_taxonomy_id
        FROM <prefix>_term_taxonomy AS term_tax
        INNER JOIN <prefix>_terms ON <prefix>_terms.term_id = term_tax.term_id
        WHERE <prefix>_terms.name="GlobalTag"
      ) as "term_taxonomy_id",
      0 as "term_order"
    FROM <prefix>_posts AS posts
    WHERE (posts.post_status IN ("publish", "draft")) AND LENGTH(post_content) > 25
    

    注意:您可能需要在此处调整帖子查询。这会标记所有已发布和/或草稿且内容超过 15 个字的帖子。

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 2013-11-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多