Intereting Posts
Добавить вложения файлов / мета в пользовательскую таксономию Как получить доступ к редактору CSS Пользовательский список SportsPress Включение миниатюр сообщений для пользовательских типов сообщений WordPress не использует отредактированное изображение Количество почтовых сообщений категории день за днем Выберите два значения из мета-ключа и отправьте мета Пользовательские типы сообщений и архив категорий WP cron не проходит через мои аргументы Пожалуйста, кто-нибудь здесь когда-либо использовал primusnote WordPress. Тема управления проектом и плагин настраивались? При добавлении темы произошла непредвиденная ошибка Как выполнить запрос по формату post в WordPress 3.1 Переопределить функцию twentytwelve_scripts_styles в дочерней теме Различные серверы для изображений Доступ к информации из базы данных поставщиков по принципу клиентского запроса

Создает только одну таблицу, а не другую

У меня есть эта функция для создания двух таблиц при активации плагина. Создается только таблица wp_wpt_stats, а не wp_wpt_list. Я знаю, что дбдельта придирчива, но я не вижу, что я делаю неправильно.

global $wpt_db_version; $wpt_db_version = "1.0"; function wpt_install() { global $wpdb; global $wpt_db_version; $table_add_toplist = $wpdb->prefix . 'wpt_list'; $table_add_wptstats = $wpdb->prefix . 'wpt_stats'; $charset_collate = $wpdb->get_charset_collate(); //-----------------------table_one----------------------------------- if($wpdb->get_var('SHOW TABLES LIKE ' . $table_add_toplist) != $table_add_toplist){ $sql_one = 'CREATE TABLE ' . $table_add_toplist . '( id INT(11) UNSIGNED AUTO_INCREMENT, link_id INT(11), visitor_ip VARCHAR(15) click_at DATETIME NOT NULL, site_votes INT(11), on_page VARCHAR(255), UNIQUE KEY id (id) ) '. $charset_collate .';'; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql_one); } //-----------------------table_two----------------------------------- if($wpdb->get_var('SHOW TABLES LIKE ' . $table_add_wptstats) != $table_add_wptstats){ $sql_two = 'CREATE TABLE ' . $table_add_wptstats . '( id INT(11) UNSIGNED AUTO_INCREMENT, link_id INT(11), impressions INT(11), inclick INT(11), outclick INT(11), PRIMARY KEY (id) ) '. $charset_collate .';'; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql_two); } add_option("wpt_db_version", $wpt_db_version ); } register_activation_hook(__FILE__,'wpt_install'); 

dbdelta требует, чтобы:

  • Вы должны поместить каждое поле в свою строку в свой оператор SQL.
  • У вас должно быть два пробела между словами PRIMARY KEY и определением вашего первичного ключа.
  • Вы должны использовать ключевое слово KEY, а не его синоним INDEX, и вы должны включить хотя бы один КЛЮЧ.
  • Вы не должны использовать какие-либо апострофы или обратные ссылки вокруг имен полей.
  • Типы полей должны быть строчными.
  • Ключевые слова SQL, такие как CREATE TABLE и UPDATE, должны быть прописными.

Если мы посмотрим на ваш звонок:

 $sql_one = 'CREATE TABLE ' . $table_add_toplist . '( id INT(11) UNSIGNED AUTO_INCREMENT, link_id INT(11), visitor_ip VARCHAR(15) click_at DATETIME NOT NULL, site_votes INT(11), on_page VARCHAR(255), UNIQUE KEY id (id) ) '. $charset_collate .';'; 

Мы видим, что вы не добавляете запятую в конец каждой строки:

  link_id INT(11), visitor_ip VARCHAR(15) click_at DATETIME NOT NULL, 

Таким образом, у вас есть недопустимый SQL, так как у visitor_ip отсутствует запятая в конце