我在我的可湿性粉剂插件中有以下代码:
if (class_exists('mypluginname')) {
$mypluginname = new mypluginname;
register_activation_hook( __FILE__, array($mypluginname, 'activation'));
register_uninstall_hook( __FILE__, array($mypluginname, 'uninstall'));
}我在课堂上有这个函数:
function uninstall() {
if (!defined('WP_UNINSTALL_PLUGIN')) {
die;
}
global $wpdb;
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}my_x");
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}my_y");
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}my_z");
}如果我卸载我的插件,DB中的表不会被删除。为什么?
发布于 2019-12-23 04:06:02
您的类方法"uninstall“必须是静态类方法!https://developer.wordpress.org/reference/functions/register_uninstall_hook/
像这样试试吧!?
class mypluginname{
static function uninstall() {
if (!defined('WP_UNINSTALL_PLUGIN')) {
die;
}
global $wpdb;
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}my_x");
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}my_y");
$wpdb->query("DROP TABLE IF EXISTS {$wpdb->prefix}my_z");
}
}
if (class_exists('mypluginname')) {
register_uninstall_hook( __FILE__, 'mypluginname::uninstall' );
}https://stackoverflow.com/questions/59446119
复制相似问题