Я пытаюсь создать таблицу, когда м плагин активирован. Я создал плагин через здесь: http://wppb.me/
Вот мой код, я не получаю ошибки при активации, однако таблицы не создаются. Нужно ли делать что-то еще, в другом месте кода?
register_activation_hook( __FILE__,array( 'Horse_Exchange_Activator', 'activate' ) );
class Horse_Exchange_Activator {
/**
* Short Description. (use period)
*
* Long Description.
*
* @since 1.0.0
*/
public static function activate() {
global $table_prefix, $wpdb;
$tblname = 'winners_horses';
$wp_track_table = $table_prefix . "$tblname ";
#Check to see if the table exists already, if not, then create it
if($wpdb->get_var( "show tables like '$wp_track_table'" ) != $wp_track_table)
{
$sql = "CREATE TABLE `". $wp_track_table . "` ( ";
$sql .= " `id` int(11) NOT NULL auto_increment, ";
$sql .= " `horse` varchar(255) NOT NULL, ";
$sql .= " `event_name` varchar(255) NOT NULL, ";
$sql .= " `cloth` varchar(255) NOT NULL, ";
$sql .= " `posted` varchar(255) NOT NULL, ";
$sql .= ") ENGINE=MyISAM DEFAULT CHARSET=latin1 ; ";
require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );
dbDelta($sql);
}
}
Ваша главная проблема — это состояние. пожалуйста, проверьте это очень тщательно. Вот решение.
<?php
/**
* Plugin Name: Test Plugin
*/
class Horse_Exchange_Activator {
/**
* Short Description. (use period)
*
* Long Description.
*
* @since 1.0.0
*/
static function activate() {
global $wpdb;
$table_name = 'abctable';
$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 );
}
}
register_activation_hook( __FILE__,array( 'Horse_Exchange_Activator', 'activate' ) );
Других решений пока нет …