WordPress中文开发手册

WordPress插件开发 — 卸载方法

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

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

当您的插件被卸载时,您将需要清除插件特定的任何插件选项和/或设置,和/或其他数据库实体(如表)。

经验不足的开发人员有时会使用停用挂钩的错误。

此表说明了停用和卸载之间的区别。

ScenarioDeactivation HookUninstall Hook
Flush Cache/TempYesNo
Flush PermalinksYesNo
Remove Options from {$wpdb->prefix}_optionsNoYes
Remove Tables from wpdbNoYes

方法1:register_uninstall_hook

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

register_uninstall_hook(__FILE__, 'pluginprefix_function_to_run');

##方法2:uninstall.php

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

例如: /plugin-name/uninstall.php

警报:使用uninstall.php时,在执行前,插件应该始终检查常量WP_UNINSTALL_PLUGIN以防止直接访问。

该常量将由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");

注意:在多站点中,通过所有博客循环删除选项可能非常耗资源。

Tags