- 插件基础知识
- 插件安全
- 钩子
- 隐私
- 管理菜单
- 简码
- 设置
- 元数据
- 自定义帖子类型
- 分类法
- 用户
-
- JavaScript、Ajax 和 jQuery
- 任务调度
- 国际化
- 插件目录
- 开发人员工具
-
卸载方法
从站点卸载插件时,您的插件可能需要进行一些清理。
如果用户已停用插件,然后单击 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" );
笔记:
在 Multisite 中,遍历所有博客以删除选项可能会占用大量资源。