将搜索和替换限制为类别
Posted
技术标签:
【中文标题】将搜索和替换限制为类别【英文标题】: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');
但是,我不希望更新覆盖整个网站,我希望将其限制为仅一个类别。
谁能告诉我如何做到这一点?
【问题讨论】:
【参考方案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 的所有帖子。如果这有意义的话。以上是关于将搜索和替换限制为类别的主要内容,如果未能解决你的问题,请参考以下文章