【问题标题】:Limiting Search and Replace to Category将搜索和替换限制为类别
【发布时间】:2013-12-08 21:03:55
【问题描述】:

我希望在主要网站上查找和替换某个关键字。

我通常会使用类似的东西

UPDATE wp_posts 
   SET post_content = REPLACE (post_content, 'Item to replace here', 'Replacement text here');  

但是,我不希望更新覆盖整个网站,我希望将其限制为仅一个类别。

谁能告诉我如何做到这一点?

【问题讨论】:

    标签: php mysql wordpress phpmyadmin


    【解决方案1】:

    更新:更准确地说,查询应该看起来

    UPDATE wp_term_relationships r JOIN wp_posts p 
        ON r.object_id = p.id JOIN wp_terms t
        ON r.term_taxonomy_id = t.term_id JOIN wp_term_taxonomy x
        ON r.term_taxonomy_id = x.term_taxonomy_id
       SET p.post_content = REPLACE(post_content, 'Item to replace here', 'Replacement text here')
     WHERE t.name = 'My Category'
       AND x.taxonomy = 'category'
       AND x.parent = 0 -- top level category
    

    注意:在更新任何内容之前:

    1)您可以查看发布会影响哪些帖子

    SELECT *
      FROM wp_term_relationships r JOIN wp_posts p 
        ON r.object_id = p.id JOIN wp_terms t
        ON r.term_taxonomy_id = t.term_id JOIN wp_term_taxonomy x
        ON r.term_taxonomy_id = x.term_taxonomy_id
     WHERE t.name = 'My Category'
       AND x.taxonomy = 'category'
       AND x.parent = 0  -- top level category
    

    2) 确保您的 wordpress 数据库有可靠的备份

    【讨论】:

    • 完美运行彼得。非常感谢。
    • 彼得,如果类别是子类别,这将如何改变?我尝试运行它,但一旦查询运行,它只会显示其上方一个类别的详细信息。
    • @Shakey 您是否有多个具有相同名称但不同父类别的子类别?
    • 一点也不。我也有类似的想法,但根本没有其他同名的子类别。
    • 彼得,还是一样。它显示正确的类别分类 ID、正确的名称和 slug。但它检索到的帖子属于上一个类别。所以子类别 46 有 500 个帖子,子类别 47 有 20 个帖子。如果我查询子类别 47 - 它返回 500 行,其中包含子类别 47 的所有帖子。如果这有意义的话。
    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 2023-03-22
    • 2022-01-12
    相关资源
    最近更新 更多