gpt4 book ai didi

mysql - 如何使用 WordPress 在卸载时删除表?

转载 作者:可可西里 更新时间:2023-11-01 06:28:31 25 4
gpt4 key购买 nike

在插件激活时,我在 WordPress 数据库中创建了 4 个表。

卸载时我想删除表。

我已经能够写出它来删除停用时的表。但从我读过的内容来看,最好保留数据库表信息直到管理员卸载而不是停用。

我一直在寻找答案,但我似乎能找到的只是在停用时删除它们。我也有我需要用它卸载的版本选项。

最佳答案

你不应该像 bhuthecoder 说的那样制作 uninstall.php。您可以根据需要命名文件,也可以在单个文件中命名而无需单独的文件进行卸载。

register_uninstall_hook('uninstall.php', 'on_uninstall');

意思是当插件被删除时,WP会运行uninstall.php并在uninstall.php中执行on_uninstall。因此,您可以根据需要重命名文件,也可以重命名函数。

register_uninstall_hook(__FILE__, 'on_uninstall');

意思是一样的,但是 __FILE__ 表示当前正在运行的文件,函数 on_uninstall 应该在这个文件中。

__FILE__ php.net

The full path and filename of the file with symlinks resolved. If used inside an include, the name of the included file is returned.

激活/停用/卸载函数的简单示例。

function on_activation()
{
//Some stuff
}

function on_deactivation()
{
//Some stuff
}

function on_uninstall()
{
//Some stuff
}

register_activation_hook(__FILE__, 'on_activation');
register_deactivation_hook(__FILE__, 'on_deactivation');
register_uninstall_hook(__FILE__, 'on_uninstall');

如果您添加了一些选项,您可以在卸载时将其删除,如下所示:

delete_option( 'some name' );

正如 bhuthecoder 所说,停用时不应该删除表,这是多余的并且对用户不友好,停用后可能会丢失数据。

您的代码中存在语法错误:

$sql = 'DROP TABLE IF EXISTS $table_name;';

应该是这样的:

$sql = "DROP TABLE IF EXISTS $table_name";

如果你想在字符串中放置一些变量,你应该使用双引号。

并且 require_once 是多余的。像这样更好:

function e34s_db_clients_uninstall()
{
global $wpdb;
$table_name = $wpdb->prefix . 'e34s_clients';
$sql = "DROP TABLE IF EXISTS $table_name";
$wpdb->query($sql);
delete_option('e34s_time_card_version');
}

register_uninstall_hook(__FILE__, 'e34s_db_clients_uninstall');

或者像这样:

register_uninstall_hook('uninstall.php', 'e34s_db_clients_uninstall');

uninstall.php 中使用函数 e34s_db_clients_uninstall

关于mysql - 如何使用 WordPress 在卸载时删除表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20944623/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com