完全删除Yoast插件创建的表及数据

完全删除Yoast插件创建的表及数据

问题:基于一个已有站点重新设计为另外一个公司的新站,如果Yoast插件存在数据遗留问题,新站上线后会会导致一系列SEO配置数据错乱问题。所以新站上线前需要执行一次SEO数据清理工作,完成所以配置清除。

方案:执行前必须备份数据库。 以下命令会永久删除数据,不能直接撤销。先确认 Yoast SEO 已经卸载,且不再需要这些 SEO 设置。

第一步:删除 Yoast 数据表

先查询:

SQL

SHOW TABLES LIKE '%yoast%';

确认查询结果中的表确实属于 Yoast SEO 后,逐一删除。常见表可以使用:

SQL

DROP TABLE IF EXISTS `wp_yoast_indexable`;

DROP TABLE IF EXISTS `wp_yoast_indexable_hierarchy`;

DROP TABLE IF EXISTS `wp_yoast_migrations`;

DROP TABLE IF EXISTS `wp_yoast_primary_term`;

DROP TABLE IF EXISTS `wp_yoast_seo_links`;

DROP TABLE IF EXISTS `wp_yoast_seo_meta`;

执行后再次检查:

SQL

SHOW TABLES LIKE '%yoast%';

如果还有其他结果,先确认表的用途,不要不加区分地全部删除。

注意: 如果你的数据库前缀不是 wp_,需要替换为实际前缀。

第二步:删除 Yoast 配置项

先查询现有配置:

SQL

SELECT option_name, option_value
FROM `wp_options`
WHERE option_name LIKE '%yoast%'
   OR option_name LIKE 'wpseo%';

确认这些配置确实属于 Yoast SEO 后,执行:

SQL

DELETE FROM `wp_options`
WHERE option_name LIKE '%yoast%'
   OR option_name LIKE 'wpseo%';

然后复查:

SQL

SELECT option_name
FROM `wp_options`
WHERE option_name LIKE '%yoast%'
   OR option_name LIKE 'wpseo%';

如果没有返回记录,说明符合上述条件的配置项已经删除。

注意:这个匹配范围可能包含第三方插件的配置,因此务必先查看查询结果;如果存在其他插件使用的配置,应改为精确删除确认属于 Yoast 的选项。

第三步:删除文章元数据

先统计:

SQL

SELECT meta_key, COUNT(*) AS total
FROM `wp_postmeta`
WHERE meta_key LIKE '%yoast%'
GROUP BY meta_key;

确认查询结果中的元数据都属于 Yoast SEO 后,执行:

SQL

DELETE FROM `wp_postmeta`
WHERE meta_key LIKE '%yoast%';

删除后检查:

SQL

SELECT meta_key, COUNT(*) AS total
FROM `wp_postmeta`
WHERE meta_key LIKE '%yoast%'
GROUP BY meta_key;

如果没有返回记录,说明符合条件的文章元数据已经删除。

这里采用 %yoast% 是为了匹配包含 yoast 的字段名,但匹配范围较宽。如果你只想删除 Yoast SEO 的标准文章元数据,可以使用更严格的条件:

SQL

DELETE FROM `wp_postmeta`
WHERE meta_key LIKE '\_yoast_wpseo%';

这条命令只匹配以 _yoast_wpseo 开头的元数据键,不会覆盖其他可能的 Yoast 字段。

第四步:删除分类、标签等对象的元数据

先查询:

SQL

SELECT meta_key, COUNT(*) AS total
FROM `wp_termmeta`
WHERE meta_key LIKE '%yoast%'
GROUP BY meta_key;

确认结果确实属于 Yoast SEO 后,执行:

SQL

DELETE FROM `wp_termmeta`
WHERE meta_key LIKE '%yoast%';

然后复查:

SQL

SELECT meta_key, COUNT(*) AS total
FROM `wp_termmeta`
WHERE meta_key LIKE '%yoast%'
GROUP BY meta_key;

没有返回记录,就说明符合条件的分类、标签等元数据已经删除。

第五步:建议额外检查用户元数据

如果你希望清理得更全面,可以检查 wp_usermeta:

SQL

SELECT meta_key, COUNT(*) AS total
FROM `wp_usermeta`
WHERE meta_key LIKE '%yoast%'
GROUP BY meta_key;

如果结果中存在已确认属于 Yoast SEO 的字段,再执行相应删除,例如:

SQL

DELETE FROM `wp_usermeta`
WHERE meta_key LIKE '%yoast%';

同样需要先确认字段归属,避免误删其他插件的数据。

第六步:最终验证

把以下查询逐一执行:

SQL

SHOW TABLES LIKE '%yoast%';

SQL

SELECT option_name
FROM `wp_options`
WHERE option_name LIKE '%yoast%'
   OR option_name LIKE 'wpseo%';

SQL

SELECT meta_key, COUNT(*) AS total
FROM `wp_postmeta`
WHERE meta_key LIKE '%yoast%'
GROUP BY meta_key;

SQL

SELECT meta_key, COUNT(*) AS total
FROM `wp_termmeta`
WHERE meta_key LIKE '%yoast%'
GROUP BY meta_key;

SQL

SELECT meta_key, COUNT(*) AS total
FROM `wp_usermeta`
WHERE meta_key LIKE '%yoast%'
GROUP BY meta_key;

如果这些查询均没有返回相关记录,且第一条没有返回相关数据表,说明上述检查范围内没有发现明显的 Yoast 残留。

我的建议: 不要直接把所有 DELETE 和 DROP TABLE 命令一次性批量执行。先查询、核对,再删除。特别是第二步到第五步,LIKE '%yoast%' 都属于较宽泛的匹配条件。即使所有查询都为空,也不能据此保证数据库中不存在使用其他命名方式保存的 Yoast 数据。

Comments are closed.