Php 为什么我在WP中的register_uninstall_hook中的函数不';不要删除表格

Php 为什么我在WP中的register_uninstall_hook中的函数不';不要删除表格,php,wordpress,Php,Wordpress,我的WP插件中有以下代码: if (class_exists('mypluginname')) { $mypluginname = new mypluginname; register_activation_hook( __FILE__, array($mypluginname, 'activation')); register_uninstall_hook( __FILE__, array($mypluginname, 'uninstall')); } 我在课堂上有一

我的WP插件中有以下代码:

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");

}
如果卸载插件,数据库中的表不会被删除。为什么?

您的类方法“卸载”必须是静态类方法

像这样试试

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' );
}