Создание таблиц по активации плагинов WordPress (шаблон)

Я пытаюсь создать таблицу, когда м плагин активирован. Я создал плагин через здесь: 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);



}



}

0

Решение

Ваша главная проблема — это состояние. пожалуйста, проверьте это очень тщательно. Вот решение.

<?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' )  );
0

Другие решения

Других решений пока нет …