• 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.