2014-11-25 49 views
1
$table_name = $wpdb->prefix . 'offline_card'; 

// function to create the DB/Options/Defaults     
function offline_card_install() { 
    global $wpdb; 
    global $table_name; 

    // create the ECPT metabox database table 
    if($wpdb->get_var("show tables like '$table_name'") != $table_name) 
    { 
     $sql = "CREATE TABLE $table_name (
     `id` mediumint(9) NOT NULL AUTO_INCREMENT, 
     `order_id` int NOT NULL, 
     `card_number` varchar(55) NOT NULL, 
     `card_expiry` varchar(55) NOT NULL, 
     `card_ccv` varchar(22) NOT NULL, 
       UNIQUE KEY id (id) 
     );"; 

     require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
     dbDelta($sql); 

    } 
} 
// run the install scripts upon plugin activation 
register_activation_hook(__FILE__,'offline_card_install'); 

我不明白是什麼原因,它不是創建數據庫表插件激活。它並沒有顯示任何錯誤。WordPress的不創建數據庫表激活

回答

0

你的代碼看起來沒問題。可能與您的變量$ table_name有關。將其寫入函數並嘗試一次:

function offline_card_install() { 
global $wpdb; 
$table_name = $wpdb->prefix . 'offline_card'; 
+0

是的,這是問題,但它的奇怪:/ – 2014-11-25 09:13:01

+0

因爲它是一個變量的本地範圍,而不是全局。 PL。如果有幫助,請勾選正確接受答案 – 2014-11-25 09:19:49

0

您檢查了$ table_name變量是否返回任何內容?

+0

我沒有配置調試器,並且使用var_dump或die在插件激活中不起作用。當我死($ table_name)。它說致命錯誤:插件cound't被激活 – 2014-11-25 09:07:56

+0

是它顯示空白。 – 2014-11-25 09:10:56

+0

我把$ table_name放在本地範圍內。但奇怪的是,wordpress文檔將其視爲全球性的。 – 2014-11-25 09:12:38