如何清除使用 wordpress 切换主题创建的自定义 table?

How to clean custom table created with the switch theme of wordpress?

我正在 wordpress 中创建自定义 table,同时在管理面板中将主题从 A 切换到 B。

add_action('after_switch_theme', 'manage_student_reports');

function manage_student_reports() {
    $sql = "CREATE TABLE IF NOT EXISTS `wp_student_reports` (
     `report_id` int(20) NOT NULL AUTO_INCREMENT,
     `student_name` varchar(50) NOT NULL,
     `department` varchar(50) DEFAULT NULL,
     `percentage` tinyint(4) DEFAULT '0',
     PRIMARY KEY (`report_id`)
    );";

    require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
    dbDelta($sql);
}

但是当我将主题从 B 切换回 A(或其他)时,table 仍然存在于 wordpress 数据库中。有没有办法放下它?

  1. dbDelta() 函数不会删除字段或 tables,只会添加和更新。
  2. after_switch_theme 在当前主题激活时挂钩 运行s 一次。要在主题停用时执行操作,请使用 switch_theme 挂钩。
  3. switch_theme 钩子中调用一个函数,该函数将触发检查 table 是否存在(为了安全并避免可能的错误),然后 运行 自定义 DROP TABLE sql.