Я пытаюсь создать новую таблицу MySQL, используя WordPress хуки. Мой код:
// this code is inside the main plugin file with the commented header
// other code in this file works as expected.
// create grid table
function createGridTable() {
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$createGridTableQuery = 'CREATE TABLE IF NOT EXISTS ' . $wpdb->get_blog_prefix() . 'priceGrids (
gridId mediumint(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (gridId),
) $charset_collate;';
// run the built query statement
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $createGridTableQuery );
// $wpdb->query($createGridTableQuery);
}
function runActivationFunctions () {
createGridTable();
// createLinkTable();
}
register_activation_hook(plugin_dir_url(__FILE__), 'runActivationFunctions');
После отключения и повторной активации плагина mysql показывает это:
mysql> show tables;
+-----------------------+
| Tables_in_wptest2 |
+-----------------------+
| wp_commentmeta |
| wp_comments |
| wp_links |
| wp_options |
| wp_postmeta |
| wp_posts |
| wp_term_relationships |
| wp_term_taxonomy |
| wp_termmeta |
| wp_terms |
| wp_testCreateViaCli | // created via cli
| wp_usermeta |
| wp_users |
+-----------------------+
13 rows in set (0.00 sec)
Следование этому руководству по синтаксису, похоже, не решило проблему: https://codex.wordpress.org/Creating_Tables_with_Plugins
// example code
global $wpdb;
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL
AUTO_INCREMENT, time datetime DEFAULT '0000-00-00 00:00:00' NOT
NULL, name tinytext NOT NULL, text text NOT NULL, url
varchar(55) DEFAULT '' NOT NULL, PRIMARY KEY (id) )
$charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); dbDelta(
$sql );
Кто-нибудь видит ошибку в моем коде? Я думаю, что я следую правилам, но с помощью WordPress не создается таблица.
Не уверен, что это актуально, но я получаю это при каждой загрузке страницы на сайт WordPress в консоли браузера:
Unchecked runtime.lastError: The message port closed before a response was received.