2015-03-22 5 views
-1

Я создаю плагин wordpress для woocommerce, и созданная мной таблица не вставлена ​​в базу данных? Я получаю ошибку The plugin generated 5090 characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.Таблица плагинов Wordpress не создается

Вот код:

register_activation_hook(__FILE__, 'pato_install'); 
     register_activation_hook(__FILE__, 'pato_install_data'); 

     function pato_install() { 
      global $wpdb; 

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

      $sql = "CREATE TABLE $table_name (
       id mediumint(9) NOT NULL AUTO_INCREMENT, 
       pato_shipping_data text NOT NULL, 
       );"; 

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

     } 

     function pato_install_data() { 
      global $wpdb; 

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

       //shipping options flat rate charges 
       $option_array = array( 
       'plants_fast' => '45.5', 
       'plants_standard' => '0'); 

       //shipping condition values 
       $condition_array = array( 
       'plant_quantity_m1_1' => '3', 
       'plant_quantity_m1_2' => '6', 
       'plant_quantity_m2_1' => '6', 
       'plant_quantity_m3_1' => '3'); 


       //shipping item charges 
       $item_charge_array = array( 
       'plants_ml_1_charge' => '49.5', 
       'plants_m2_1_charge' => '69.5', 
       'plants_m3_1_charge' => '89.5'); 

       $data_array = array_merge($option_array,$condition_array,$item_charge_array); 

       $data_array = serialize($data_array); 

      $wpdb->insert( 
       $table_name, 
       array('pato_shipping_data' => $data_array)    
      ); 
     } 

Где я ошибся?

+1

есть удобный маленький плагин, который вы можете использовать для быстрого устранения таких ошибок: https://wordpress.org/plugins/debug-plugin-activation-errors/ – diggy

+0

Вероятно, произошла ошибка во время активации, поскольку страница сразу же перенаправляется после активации, используя die() в конце функции активации, чтобы увидеть результат. – Danijel

+0

благодарит за ошибку из-за плагина @diggy – user892134

ответ

1

У вас есть некоторые ошибки в запросе create table. Столбец автоинкремент должен быть ключом, и после второго столбца у вас есть дополнительная запятая. Попытка:

CREATE TABLE $table ( 
    id mediumint(9) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    pato_shipping_data text NOT NULL 
) 

Обычно я стараюсь запускать свои запросы непосредственно перед их включением в плагин. Это делает отладку намного проще.

+0

Спасибо, мне пришлось добавить 'UNIQUE KEY id (id)' и плагин активирован правильно. – user892134

Смежные вопросы