Warum wird das Erstellen von Tabellen mit $ wpdb beim Installieren von Plugins nicht ausgeführt?

Dies ist der Code, den ich verwende, um eine Tabelle beim Installieren des Plugins zu erstellen. Aber, ich habe viele Möglichkeiten ausprobiert und aus irgendeinem Grund funktioniert es nicht. Gibt es einen anderen effizienten Weg, dies zu tun? Bitte Hilfe, danke in Advanced

global $wpdb; function creating_order_tables() { global $wpdb; $ptbd_table_name = $wpdb->prefix . 'printtextbd_order'; if ($wpdb->get_var("SHOW TABLES LIKE '". $ptbd_table_name ."'" ) != $ptbd_table_name ) { $sql = 'CREATE TABLE exone( customer_id INT(20) AUTO_INCREMENT, customer_name VARCHAR(255), order_type VARCHAR(255), choosen_template VARCHAR(255), order_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(customer_id))'; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); echo "hello"; } } register_activation_hook(__FILE__, 'creating_order_tables'); 

Solutions Collecting From Web of "Warum wird das Erstellen von Tabellen mit $ wpdb beim Installieren von Plugins nicht ausgeführt?"

Versuchen Sie es mit einer anderen Methode. WordPress triggers während der Aktivierung des Plugins activate_yourplugin/filename.php einen Haken aus. Sie können dies verwenden, um Tabellen zu erstellen.

 function creating_order_tables() { if(!get_option('tables_created', false)) { global $wpdb; $ptbd_table_name = $wpdb->prefix . 'printtextbd_order'; if ($wpdb->get_var("SHOW TABLES LIKE '". $ptbd_table_name ."'" ) != $ptbd_table_name ) { $sql = 'CREATE TABLE exone( customer_id INT(20) AUTO_INCREMENT, customer_name VARCHAR(255), order_type VARCHAR(255), choosen_template VARCHAR(255), order_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(customer_id))'; if(!function_exists('dbDelta')) { require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); } dbDelta($sql); echo "Tables created..."; update_option('tables_created', true); } } } add_action('activate_yourplugin/yourplugin.php', 'creating_order_tables'); 

Probieren Sie dieses aus. Denken Sie auch daran, dass int maximal von int (11) sein kann.

 < ?php global $wpdb; // Set table name $table = $wpdb->prefix . 'exone'; $charset_collate = $wpdb->get_charset_collate(); // Write creating query $query = "CREATE TABLE IF NOT EXISTS ".$table." ( customer_id INT(11) AUTO_INCREMENT, customer_name VARCHAR(255), order_type VARCHAR(255), choosen_template VARCHAR(255), order_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY(customer_id) )$charset_collate;"; // Execute the query $wpdb->query( $query );