Создание таблицы в пользовательском плагине при его активации
17 мар. 2016 г., 10:55:13
Просмотры: 49.6K
Голосов: 9
Я пытаюсь создать пользовательский плагин, в котором хочу создать таблицу при активации плагина. Я попробовал следующий код, но он не создает таблицу в базе данных
function create_plugin_database_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'sandbox';
$sql = "CREATE TABLE $table_name (
id mediumint(9) unsigned NOT NULL AUTO_INCREMENT,
title varchar(50) NOT NULL,
structure longtext NOT NULL,
author longtext NOT NULL,
PRIMARY KEY (id)
);";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
register_activation_hook( __FILE__, 'create_plugin_database_table' );

Arun Kumaresh
193
Комментарии
Все ответы на вопрос
3
2
Чтобы создать таблицу, необходимо подключить файл wpadmin/upgrade-functions.php. Пример:
function create_plugin_database_table()
{
global $table_prefix, $wpdb;
$tblname = 'pin';
$wp_track_table = $table_prefix . "$tblname ";
#Проверяем, существует ли таблица. Если нет — создаем её
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 .= " `pincode` int(128) NOT NULL, ";
$sql .= " PRIMARY KEY `order_id` (`id`) ";
$sql .= ") ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; ";
require_once( ABSPATH . '/wp-admin/includes/upgrade.php' );
dbDelta($sql);
}
}
register_activation_hook( __FILE__, 'create_plugin_database_table' );

dipika
204
17 мар. 2016 г. 12:10:15
0
Этот код работает у меня:
function installer(){
include('installer.php');
}
register_activation_hook(__file__, 'installer');
Затем installer.php :
global $wpdb;
$table_name = $wpdb->prefix . "my_products";
$my_products_db_version = '1.0.0';
$charset_collate = $wpdb->get_charset_collate();
if ( $wpdb->get_var("SHOW TABLES LIKE '{$table_name}'") != $table_name ) {
$sql = "CREATE TABLE $table_name (
ID mediumint(9) NOT NULL AUTO_INCREMENT,
`product-model` text NOT NULL,
`product-name` text NOT NULL,
`product-description` int(9) NOT NULL,
PRIMARY KEY (ID)
) $charset_collate;";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
add_option('my_db_version', $my_products_db_version);
}

Jismon Thomas
211
15 мар. 2018 г. 00:20:47
2
// Функция для создания таблицы плагина при активации
function astro_plugin_table_install() {
global $wpdb;
global $charset_collate;
$table_name = $wpdb->prefix . 'pin'; // Формируем имя таблицы с префиксом WordPress
// SQL-запрос для создания таблицы, если она не существует
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
`id` bigint(20) NOT NULL AUTO_INCREMENT, // Уникальный ID записи
`pincode` bignit(128) DEFAULT NOT NULL, // Поле для хранения пин-кода
PRIMARY KEY (`id`) // Устанавливаем первичный ключ
)$charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql ); // Создаем или обновляем таблицу
}
// Регистрируем функцию создания таблицы при активации плагина
register_activation_hook(__FILE__,'astro_plugin_table_install');

Pankaj Kumar
11
28 дек. 2017 г. 16:02:39
Похожие вопросы
2
ответов
2
ответов