在WordPress数据库中插入表

时间:2016-11-04 06:55:28

标签: php wordpress

我希望在插件激活时将表插入WordPress数据库。我已经使用过这段代码,但它无效。这个代码应该在插件被激活时创建一个表,但是当我激活插件时,在我的WordPress中,代码可以工作,但是数据库中没有创建表。

如何在插件激活时在WordPress数据库中创建表格?

我的插件使用了以下代码

class createtabel {
    function __construct() {
        register_activation_hook( __FILE__, 'create_plugin_database_table' );
    }

    public static function create_plugin_database_table() {
        global $wpdb;
        $table_name = $wpdb->prefix . 'wp_productqa';
        $sql = "CREATE TABLE $table_name (
        QA_id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
        Product_ID varchar(50) NOT NULL,
        Username varchar(50)NOT NULL,
        Useremail varchar(50) NOT NULL,
        comment varchar(255) NOT NULL,
        PRIMARY KEY  (QA_id)
        );";
        require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
        dbDelta( $sql );
    }
}

2 个答案:

答案 0 :(得分:0)

你必须确保调用register_activation_hook。

例如,在您的插件定义文件中,您可以:

$createTable = new createtabel;
register_activation_hook(__FILE__, array($createTable, 'create_plugin_database_table'));

BTW,在createtabel类中,您可以使用以下命令创建表:

$wpdb->query($sql);

你的意图也是

$table_name = $wpdb->prefix . 'wp_productqa';

最有可能(假设前缀为wp_)将具有:

$table_name = 'wp_wp_productqa';

答案 1 :(得分:0)

请在激活插件时使用此代码,它将在您的数据库中创建新表。

register_activation_hook(__FILE__, 'install_covercarousel');

在全局启动文件编码时定义上面的钩子。

另外,请不要使用public static function只需添加function and functioname这样function abs(){}

更改后的代码看起来像这样

register_activation_hook( __FILE__, 'create_plugin_database_table' );
function create_plugin_database_table() {
            global $wpdb;
            $table_name = $wpdb->prefix . 'wp_productqa';
            $sql = "CREATE TABLE $table_name (
            QA_id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
            Product_ID varchar(50) NOT NULL,
            Username varchar(50)NOT NULL,
            Useremail varchar(50) NOT NULL,
            comment varchar(255) NOT NULL,
            PRIMARY KEY  (QA_id)
            );";
            require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
            dbDelta( $sql );
        }