之前记录过Wordpress批量替换文章标题、文章内容的sql。

今天突然想把某个网站的文章标签也替换了,替换成有高指数的关键词。

然后用Chatgpt问了下,怎么批量修改的sql命令。

首先执行:

UPDATE wp_terms SET name = '新内容' WHERE name = '旧内容';

然后执行:

UPDATE wp_term_taxonomy SET taxonomy = REPLACE(taxonomy, '旧内容', '新内容') WHERE taxonomy LIKE '%旧内容%';

这个才是完整的,因为对于 WordPress 数据库来说,直接使用 update 语句可能不够完整,因为标签名称(name 字段)存储在 wp_terms 表中,但标签和文章的关联信息存储在 wp_term_relationships 表中。

所以,如果你只执行 UPDATE wp_terms SET name = '新内容' WHERE name = '旧内容'; 这句 SQL 语句,标签名称是会被替换掉的,但是它们和文章的关联信息仍然保持不变,导致文章的标签显示不正确。

还有一种sql命令:

UPDATE wp_terms SET name = replace(name,'旧内容', '新内容');

这是直接将所有旧内容全部替换了,但是也可能会把不想替换的也替换了,相当于一步到位替换全部旧内容的标签内容。

执行前请备份数据库!!!

Tagged in: