我们在设计WordPress插件的时候,肯定也要为用户着想,允许他们自由的选择使用和不使用,于是当用户不准备使用我们插件的时候,也需要自然的让卸载插件和对应的数据,不能强行且只允许安装不允许卸载。不过,在WordPress卸载插件的时候有两个方法,一种是 uninstall.php 文件,一种是自带的uninstall 钩子。
第一、uninstall.php 文件方法
这是一种比较常用的方法,我们可以将卸载文件放在独立的文件中,我们需要在根目录创建uninstall.php文件,如果我们在执行卸载的时候系统会判断,如果有这个文件会优先执行这个。示范例子:
<?php
// 如果 uninstall 不是从 WordPress 调用,则退出
if( !defined( 'WP_UNINSTALL_PLUGIN' ) )
exit();
// 从 options 表删除选项
delete_option( 'cnwper_myplugin_options' );
// 删除其他额外的选项和自定义表
?>
这里还用到WP_UNINSTALL_PLUGIN,保证只有在删除插件时才能够执行 uninstall.php 文件的安全的方法,通过验证插件合法性之后,才可以卸载和删除插件数据。插件卸载脚本的目的是要从数据库中删除任何与插件相关的内容。这包括删除所有选项,已经删除所有自定义的表。
第二、卸载钩子方法
<?php
register_activation_hook( __FILE__, 'boj_myplugin_activate' );
function boj_myplugin_activate() {
// 注册卸载函数
register_uninstall_hook( __FILE__, 'boj_myplugin_uninstaller' );
}
function boj_myplugin_uninstaller() {
// 删除插件创建的选择,表等等
delete_option( 'boj_myplugin_options' );
}
?>
register_uninstall_hook() 必须在启用函数中调用。因此要在使用 register_activation_hook() 函数执行插件启用的函数中包含 uninstall 钩子。接着调用 uninstall 函数。一般目前最流行的最好是使用uninstall.php页面单独执行卸载插件。