2017-06-02 109 views
0

我想創建一個wordpress自定義插件,並且我在創建我的數據庫中的表格時激活了我的插件,請幫助我。我搜索了很多示例,我嘗試了它,但仍然沒有運氣。如何使用wordpress插件在數據庫中創建表格

請幫幫我。

我嘗試這樣的代碼:

function create_plugin_database_table() 
    { 
    global $table_prefix, $wpdb; 

    $tblname = 'customer'; 
    $wp_track_table = $table_prefix . "$tblname "; 

    #Check to see if the table exists already, if not, then create it 

    if($wpdb->get_var("show tables like '$wp_track_table'") != 
    $wp_track_table) 
    { 

    $sql = "CREATE TABLE `". $wp_track_table . "` ("; 
    $sql .= " `id` int(11) NOT NULL auto_increment, "; 
    $sql .= " `pincode` int(128) NOT NULL, "; 
    $sql .= " PRIMARY KEY `order_id` (`id`) "; 
    $sql .= ") ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; "; 
    require_once(ABSPATH . '/wp-admin/includes/upgrade.php'); 
    dbDelta($sql); 
    } 
    } 

    register_activation_hook(__FILE__, 'create_plugin_database_table'); 
+0

你能展示一些你的嘗試嗎? –

+0

我已經編輯了我的問題,請檢查。 –

+0

當我嘗試停用我的插件並再次激活時,它不會在我的數據庫中創建表。 –

回答

0

首先,我改了一下你的創作表腳本。從$ wpdb讀取前綴,並且不檢查表,使用CREATE IF NOT EXIST。

function create_plugin_database_table() { 
    global $wpdb; 

    $tblname = 'customer'; 
    $wp_track_table = $wpdb->prefix . "$tblname"; 

    $sql = "CREATE TABLE IF NOT EXISTS $wp_track_table ("; 
    $sql .= " `id` int(11) NOT NULL auto_increment, "; 
    $sql .= " `pincode` int(128) NOT NULL, "; 
    $sql .= " PRIMARY KEY `order_id` (`id`) "; 
    $sql .= ") ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; "; 
    require_once(ABSPATH . '/wp-admin/includes/upgrade.php'); 
    dbDelta($sql); 

} 
register_activation_hook(__FILE__, 'create_plugin_database_table'); 

此外,我已經提出了要求。如果您需要插入一些默認值,請在創建後執行,而不是在相同的請求中。如果沒有工作,請啓用調試和檢查日誌。

+0

存在錯誤: 插件無法激活,因爲它觸發了致命錯誤。 致命錯誤:調用未定義函數dbDelta() –

+0

當我試圖更改 require_once(ABSPATH。'/wp-admin/includes/upgrade.php'); 達到dbDelta(sql); 激活成功 –

+0

對不起,我還沒有正確提出要求。在函數dbDelta之前執行require是正確的,因爲這些函數是在這個文件上定義的。響應已更新。 –