2014-09-06 62 views
-1

我剛開始開發一個插件。但dbDelta()不工作,當我改變MySQL查詢,然後我試圖停用和激活插件進一步,但表不使用dbDelta()finction更新。更新表如果在插件激活時退出

if ($wpdb->get_var("SHOW TABLES LIKE '$table_name'") != $table_name) { 

    $sql = 'CREATE TABLE '.$table_name.' (
    id int(11) NOT NULL AUTO_INCREMENT, 
    product_name text NOT NULL, 
    UNIQUE KEY id (id))'; 

    //reference to upgrade.php file 
    require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
    dbDelta($sql); 
} 
+0

顯示一些代碼,請。 – Sven 2014-09-06 09:57:21

+0

編輯的代碼請參見 – 2014-09-06 10:00:37

+0

您確定使用register_activation_hook正確地掛接了包含上述代碼的函數嗎?也許顯示更多的代碼? – Sven 2014-09-06 10:02:13

回答

0

你會更好,只是檢查表通過直接調用它的存在......

global $wpdb; 
$table_name= 'name of table without the prefix!' 

if(!isset($wpdb->$table_name)){ 
    $sql = 'CREATE TABLE '.$table_name.' (
    id int(11) NOT NULL AUTO_INCREMENT, 
    product_name text NOT NULL, 
    UNIQUE KEY id (id))'; 

    //reference to upgrade.php file 
    require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
    $result=dbDelta($sql); 
    var_dump($result); 
    }