在开发插件的过程中,免不了在数据库创建一些字段乃至表,或者创建了一些定时任务,当插件被删除的时候这些东西就会被留在 WordPress 上,变成垃圾,作为负责的开发者,有必要在删除插件的时候帮助用户删除掉我们留下的痕迹。

uninstall.php 文件

做到这点有两种方法,一时在插件的根目录创建一个 uninstall.php 文件,在你的插件被删除之前会调用执行这个文件,但要注意就是防止有人恶意访问这个文件我们需要判断一下 WP_UNINSTALL_PLUGIN 常量是否被定义,没定义则结束程序:

<?php

//防止有人恶意访问此文件,所以在没有 WP_UNINSTALL_PLUGIN 常量的情况下结束程序

if(!defined('WP_UNINSTALL_PLUGIN'))exit();

//可以在要卸载的时候做一些事情,比如删除一些字段,注销定时任务

delete_option('薇晓朵_name');

delete_option('薇晓朵_name2');

卸载钩子

第二种方法叫做卸载钩子,在你的根目录没有 uninstall.php 文件的时候 WordPress 会去执行卸载钩子。

例子:

register_uninstall_hook(__FILE__,'Bing_uninstall_func');

functionBing_uninstall_func(){

    //可以在要卸载的时候做一些事情,比如删除一些字段,注销定时任务

    delete_option('薇晓朵_name');

    delete_option('薇晓朵_name2');    

}

这些代码直接放到插件的文件里即可,不过卸载钩子不能使用类函数,否则会把 $this 保存到数据库里,所以如果不是万不得已请尽可能的使用 uninstall.php 文件。