Crearea unui tabel într-un plugin personalizat la activarea acestuia
17 mar. 2016, 10:55:13
Vizualizări: 49.6K
Voturi: 9
Încerc să creez un plugin personalizat în care vreau să creez un tabel atunci când plugin-ul este activat. Am încercat următorul cod, dar nu creează tabelul în baza de date
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 );
}
// Înregistrează funcția pentru a fi executată la activarea plugin-ului
register_activation_hook( __FILE__, 'create_plugin_database_table' );

Arun Kumaresh
193
Comentarii
Toate răspunsurile la întrebare
3
2
Trebuie să incluzi fișierul wpadmin/upgrade-functions.php pentru a crea o tabelă exemplu:
function create_plugin_database_table()
{
global $table_prefix, $wpdb;
$tblname = 'pin';
$wp_track_table = $table_prefix . "$tblname ";
#Verifică dacă tabela există deja, dacă nu, atunci creează-o
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
Acest cod funcționează pentru mine:
function installer(){
include('installer.php');
}
register_activation_hook(__file__, 'installer');
Apoi în 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 dec. 2017 16:02:39
Întrebări similare
2
răspunsuri
3
răspunsuri
2
răspunsuri
2
răspunsuri
2
răspunsuri