卸载插件中的.php文件以清除数据库

时间:2013-04-01 作者:Sudar

我知道WordPress通过提供uninstall.php 钩您只需放置清理代码,它就会工作。

但我的问题是,我已经看到了几个插件,它们使用的是插件文件中定义的函数uninstall.php 文件我的理解是,如果插件已经被禁用,并且用户正在删除它,那么这些功能可能无法访问。

我的假设是否正确,或者是否有我不知道的WordPress魔术?

1 个回复
最合适的回答,由SO网友:brasofilo 整理而成

我在卸载中看到了几个插件,它们使用插件文件中定义的函数。php文件。

如果uninstall.php 调用插件的一个函数,它将生成Fatal error: Call to undefined function. 除非(下文解释)。

另一方面,这是可行的:

<?php
/* Plugin Name: Test Uninstall */
register_activation_hook( __FILE__, \'test_activate\' );
register_uninstall_hook( __FILE__, \'test_uninstall\' );

function test_activate()  { update_option( \'testing_uninstall\', true ); }
function test_uninstall() { test_delete_me(); }
function test_delete_me() { delete_option( \'testing_uninstall\' ); }
我们可以在函数中看到原因uninstall_plugin(). 如果unistall.php 存在,包括、执行和故事结束
如果否uninstall.php 文件存在,如果我们注册了卸载挂钩,则将包括主插件文件:include WP_PLUGIN_DIR . \'/\' . $file;, 以便使回调可用,从而使其他函数也可用。

我们可以做一些include在我们的uninstall.php 文件,但卸载过程是否如此复杂以至于需要此文件?

引自related wp-hackers thread (我强调):

[T] 卸载挂钩存储在数据库中,在运行时不确定。您的插件将无法接收init/plugins_loaded/admin_init, etc钩子在调用卸载钩子时触发,这是一个"Heres some SELF CONTAINED code to run to clean up"

结束

相关推荐

Travel Blog Plugins

今年晚些时候,我将使用Wordpress创建一个关于我旅行的博客。我希望该博客具有以下功能我的帖子将被地理定位一张包含帖子位置的地图,可以单击地图上的各个点到达帖子</我正在寻找最好/最合适的插件。谢谢,艾尔。