if (!defined("WP_UNINSTALL_PLUGIN")) { exit; }
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE 'abc\_%'");
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_abc\_%';");
插件删除半年,wp_options 里带 abc_ 前缀的记录还有三百多条,autoload 字段几乎都是 yes,每次请求都要多反序列化一遍。装新插件查冲突的时候才发现它们还赖在库里。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:卸载时 WordPress 只负责删插件目录,数据库里的内容要插件自己在 uninstall.php 里清。没写这个文件,或者写了却没判断卸载常量,选项和临时数据就会一直留着。
「插件卸载清理选项」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。监控和日志的时间要对上,时区不一致会多绕很大一圈。
处理上按这个顺序:在插件根目录建卸载文件 第一行判断常量 不在卸载流程里就直接退出;按前缀把普通选项和站点选项成对清掉 多站点两份都要写;删完再按前缀查一次 把漏掉的临时缓存也一起收尾。
确认没问题再收工,删掉插件后按 abc_ 前缀查 wp_options 返回 0 行,数据库体积少了两兆多。
