完全删除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 数据。