如何使用REGISTER_UNINSTALL_HOOK删除选项?

时间:2011-08-01 作者:homemrobo

现在,我有以下代码:

function mr_np_activate(){
    // hook uninstall
    if ( function_exists(\'register_uninstall_hook\') )
        register_uninstall_hook(__FILE__,\'mr_np_uninstall\');        
}
register_activation_hook(__FILE__,\'mr_np_activate\');


/**
 * Delete options
 *
 **/    


function mr_np_uninstall() {
    delete_option(\'my_plugins_options\'); 
}
但当我删除插件时,我的所有选项都在那里。(我制作了另一个插件来显示我的选项)。

删除插件后,如何删除选项?

2 个回复
最合适的回答,由SO网友:Mark Duncan 整理而成

你可以随时使用uninstall.php 而不是插件的文件。

http://codex.wordpress.org/Function_Reference/register_uninstall_hook

如果没有在插件中运行代码就无法编写插件,那么插件应该创建一个名为“uninstall”的文件。基本插件文件夹中的“php”。如果存在此文件,则在卸载过程中将绕过卸载挂钩调用此文件。

使用“卸载”时。php“在执行之前,插件应该始终检查WP\\u UNINSTALL\\u plugin常量。WP\\u UNINSTALL\\u PLUGIN常量由WordPress在插件卸载期间的运行时定义,如果“UNINSTALL”,则该常量将不存在。直接请求php。

如果唯一的目的是删除一个选项,那么该文件实际上只需要一行代码。

<?php delete_option( \'your-option\' ); ?>
实际上并没有解决您的问题,只是提供了一种处理插件停用的替代方法。

至于问题,我认为问题是您试图在激活挂钩期间添加停用回调,这对我来说似乎有点落后或不正确,我假设停用挂钩应该以与激活挂钩相同的方式注册,但两者都不嵌套在另一个挂钩内。

SO网友:Arsen K.

在主插件文件中:

// plugin activation
register_activation_hook( __FILE__, \'my_fn_activate\' );
function my_fn_activate() {
    add_option( \'my_plugin_option\', \'some-value\' );
}

// plugin deactivation
register_deactivation_hook( __FILE__, \'my_fn_deactivate\' );
function my_fn_deactivate() {
    // some code for deactivation...
}

// plugin uninstallation
register_uninstall_hook( __FILE__, \'my_fn_uninstall\' );
function my_fn_uninstall() {
    delete_option( \'my_plugin_option\' );
}

结束