跳转到主要内容

卸载方法

从站点卸载时,您的插件可能需要进行一些清理。

如果用户停用插件,然后单击 WordPress 管理员中的删除链接,则该插件将被视为已卸载。

卸载插件后,您需要清除特定于插件的所有插件选项和/或设置,和/或其他数据库实体(例如表)。

经验不足的开发人员有时会错误地使用停用挂钩来实现此目的。

此表说明了停用和卸载之间的差异。

设想 停用挂钩 卸载挂钩
刷新缓存/临时 是的
刷新固定链接 是的
从 {$wpdb ->prefix}_options中删除选项 是的
从wpdb中删除表 是的

方法一:register_uninstall_hook

要设置卸载挂钩,请使用register_uninstall_hook() 函数:

register_uninstall_hook(
	__FILE__,
	'pluginprefix_function_to_run'
);

方法二:uninstall.php

要使用此方法,您需要uninstall.php在插件的根文件夹中创建一个文件。当用户删除插件时,这个魔术文件会自动运行。例如:/plugin-name/uninstall.php

警报:WP_UNINSTALL_PLUGIN在做任何事情之前 一定要检查常量uninstall.php。这可以防止直接访问。
该常量将由 WordPress 在uninstall.php调用期间定义。

当执行卸载时,该常量未定义register_uninstall_hook() 。

以下是删除选项条目并删除数据库表的示例:

// if uninstall.php is not called by WordPress, die
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
    die;
}

$option_name = 'wporg_option';

delete_option( $option_name );

// for site options in Multisite
delete_site_option( $option_name );

// drop a custom database table
global $wpdb;
$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}mytable" );

笔记:在多站点中,循环遍历所有博客以删除选项可能会占用大量资源。