Creating Multiple Tables for WP Plugin
-
I’m creating my first WP plugin and need it to create 3 tables when activated. This is my install function:
function prod_install() {
global $wpdb;
global $prod_db_version;
if ( $wpdb->get_var("SHOW TABLES LIKE 'wp_prod_categories'") != 'wp_prod_categories' ) {
$sql = "CREATE TABLE wp_prod_categories (
cat_id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
cat_name VARCHAR(45) NOT NULL,
cat_description TEXT NULL,
PRIMARY KEY (cat_id)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
if ( $wpdb->get_var("SHOW TABLES LIKE 'wp_prod_products'") != 'wp_prod_products' ) {
$sql = "CREATE TABLE wp_prod_products (
prod_id TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
prod_name VARCHAR(45) NOT NULL,
prod_desc TEXT NULL,
cat_id` TINYINT UNSIGNED NOT NULL,
PRIMARY KEY (prod_id),
INDEX cat_id (cat_id ASC),
CONSTRAINT cat_id
FOREIGN KEY (cat_id)
REFERENCES prod_categories (cat_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
if ( $wpdb->get_var("SHOW TABLES LIKE 'wp_prod_images'") != 'wp_prod_images' ) {
$sql = "CREATE TABLE wp_prod_images (
img_id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT ,
prod_id SMALLINT UNSIGNED NOT NULL ,
img_file_name VARCHAR(45) NOT NULL ,
PRIMARY KEY (img_id),
INDEX prod_id (prod_id ASC),
CONSTRAINT prod_id
FOREIGN KEY (prod_id)
REFERENCES prod_products (prod_id)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
);";
require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
dbDelta($sql);
}
$installedproducts = get_option( "prod_db_version" );
if ( $installedproducts != $prod_db_version )
update_option( "prod_db_version", $prod_db_version);
else
add_option("prod_db_version", $prod_db_version);
}
It will create the first table, but not the other two.
- The topic ‘Creating Multiple Tables for WP Plugin’ is closed to new replies.