Crear una tabla en un plugin personalizado al activarlo
17 mar 2016, 10:55:13
Vistas: 49.6K
Votos: 9
Estoy tratando de crear un plugin personalizado donde quiero crear una tabla cuando el plugin se activa. He probado el siguiente código pero no está creando la tabla en la base de datos
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
Comentarios
Todas las respuestas a la pregunta
3
2
Debes incluir el archivo wpadmin/upgrade-functions.php para crear una tabla. Ejemplo:
function create_plugin_database_table()
{
global $table_prefix, $wpdb;
$tblname = 'pin';
$wp_track_table = $table_prefix . "$tblname ";
// Verificar si la tabla ya existe, si no, crearla
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 mar 2016 12:10:15
0
Este código funciona para mí:
function installer(){
include('installer.php');
}
register_activation_hook(__file__, 'installer');
Luego en 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 mar 2018 00:20:47
2
function astro_plugin_table_install() {
global $wpdb;
global $charset_collate;
$table_name = $wpdb->prefix . 'pin';
$sql = "CREATE TABLE IF NOT EXISTS $table_name (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`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 dic 2017 16:02:39
Preguntas relacionadas
2
respuestas
3
respuestas
2
respuestas
2
respuestas
2
respuestas