2016-05-03 2 views
0

Создал пользовательский плагин для Wordpress, который работает, но не работает.Неустранимая ошибка - но она работает - не будет активирована

Когда я активировать плагин с помощью следующего кода документ:

  1. создает таблицу
  2. и вставляет данные (хотя в 3 раза?).

Затем «Плагин не может быть активирован, потому что он вызвал фатальную ошибку».

  • Нет журнала отладки не будет создаваться
  • Там нет ошибок в консоли.
  • форм-работ и представляет

Это функция создания таблицы:

function db1_install() { 
     global $wpdb; 
     global $db_version1; 
     global $table_name; 
     $table_name = $wpdb->prefix . 'myCategories'; 
     $charset_collate = $wpdb->get_charset_collate();  
     $sql = "CREATE TABLE $table_name (
      id mediumint(9) NOT NULL, 
      item varchar(20) NOT NULL, 
      item_cat varchar(20) NOT NULL 
      ) $charset_collate;"; 
     require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); 
     dbDelta($sql); 
     add_option('db_version1', $db_version1);  
    } 
    register_activation_hook(__FILE__, 'db1_install'); 

И это вставить данные функции:

`enter code here`function add_categories(){ 

    global $wpdb; 
    $table_name = $wpdb->prefix . 'myCategories'; 
    $wpdb->query("INSERT INTO $table_name (id,item,item_cat) 
    values (1,'item1','cat1'), (2,'item2','cat1'), (2,'item3','cat4')"); 
    die(); 
    return true; 
    } 
    register_activation_hook(__FILE__, 'add_categories'); 

кого?

+1

Две потенциальные проблемы, которые я вижу в вашем коде: 1) Функция 'die();' в вашей функции 'add_categories()' может помешать работе WordPress распознавать, был ли активирован плагин. 2) 'global $ table_name;'. Вы не должны помещать свою таблицу в глобальное пространство имен, поскольку это может противоречить другим плагинам. –

+0

Эй, Лукас. Ты совершенно прав. Спасибо за комментарий. Ты очень помог мне, и я удалил стол из мира. Еще раз спасибо за понимание. – Diggetydog

+0

Удивительный, рад, что он сработал. –

ответ

0

Два потенциальные проблемы, которые я вижу в вашем коде,

  1. die(); в вашей add_categories() функции может быть баловаться с возможностью WordPress' различить, если плагин был успешно активирован.
  2. Ваше использование global $table_name;. Вы не должны помещать свою таблицу в глобальное пространство имен, поскольку это может противоречить другим плагинам.
+0

Спасибо, Лукас - die(); была проблема. Я также изменяю переменную table_name, и теперь все работает. – Diggetydog

+0

Отлично, рад слышать, что он работает на вас сейчас. –

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