install_blog

The timeline below displays how wordpress function install_blog has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 5.4

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU (3.0.0)
 * @deprecated 5.1.0
 *
 * @global wpdb     $wpdb     WordPress database abstraction object.
 * @global WP_Roles $wp_roles WordPress role management object.
 *
 * @param int    $blog_id    The value returned by wp_insert_site().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles;
    _deprecated_function(__FUNCTION__, '5.1.0');
    // Cast for security.
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up.
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    // populate_roles() clears previous role definitions so we start over.
    $wp_roles = new WP_Roles();
    $siteurl = $home = untrailingslashit($url);
    if (!is_subdomain_install()) {
        if ('https' === parse_url(get_site_option('siteurl'), PHP_URL_SCHEME)) {
            $siteurl = set_url_scheme($siteurl, 'https');
        }
        if ('https' === parse_url(get_home_url(get_network()->site_id), PHP_URL_SCHEME)) {
            $home = set_url_scheme($home, 'https');
        }
    }
    update_option('siteurl', $siteurl);
    update_option('home', $home);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option(get_network()->site_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // Remove all permissions.
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // Delete all.
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // Delete all.
}

WordPress Version: 5.3

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU (3.0.0)
 * @deprecated 5.1.0
 *
 * @global wpdb     $wpdb     WordPress database abstraction object.
 * @global WP_Roles $wp_roles WordPress role management object.
 *
 * @param int    $blog_id    The value returned by wp_insert_site().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles;
    _deprecated_function(__FUNCTION__, '5.1.0');
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    // populate_roles() clears previous role definitions so we start over.
    $wp_roles = new WP_Roles();
    $siteurl = $home = untrailingslashit($url);
    if (!is_subdomain_install()) {
        if ('https' === parse_url(get_site_option('siteurl'), PHP_URL_SCHEME)) {
            $siteurl = set_url_scheme($siteurl, 'https');
        }
        if ('https' === parse_url(get_home_url(get_network()->site_id), PHP_URL_SCHEME)) {
            $home = set_url_scheme($home, 'https');
        }
    }
    update_option('siteurl', $siteurl);
    update_option('home', $home);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option(get_network()->site_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: 5.1

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU (3.0.0)
 * @deprecated 5.1.0
 *
 * @global wpdb     $wpdb
 * @global WP_Roles $wp_roles
 *
 * @param int    $blog_id    The value returned by wp_insert_site().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles;
    _deprecated_function(__FUNCTION__, '5.1.0');
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    // populate_roles() clears previous role definitions so we start over.
    $wp_roles = new WP_Roles();
    $siteurl = $home = untrailingslashit($url);
    if (!is_subdomain_install()) {
        if ('https' === parse_url(get_site_option('siteurl'), PHP_URL_SCHEME)) {
            $siteurl = set_url_scheme($siteurl, 'https');
        }
        if ('https' === parse_url(get_home_url(get_network()->site_id), PHP_URL_SCHEME)) {
            $home = set_url_scheme($home, 'https');
        }
    }
    update_option('siteurl', $siteurl);
    update_option('home', $home);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option(get_network()->site_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: 4.9

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU (3.0.0)
 *
 * @global wpdb     $wpdb
 * @global WP_Roles $wp_roles
 *
 * @param int    $blog_id    The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    // populate_roles() clears previous role definitions so we start over.
    $wp_roles = new WP_Roles();
    $siteurl = $home = untrailingslashit($url);
    if (!is_subdomain_install()) {
        if ('https' === parse_url(get_site_option('siteurl'), PHP_URL_SCHEME)) {
            $siteurl = set_url_scheme($siteurl, 'https');
        }
        if ('https' === parse_url(get_home_url(get_network()->site_id), PHP_URL_SCHEME)) {
            $home = set_url_scheme($home, 'https');
        }
    }
    update_option('siteurl', $siteurl);
    update_option('home', $home);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option(get_network()->site_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: 4.7

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU
 *
 * @global wpdb     $wpdb
 * @global WP_Roles $wp_roles
 *
 * @param int    $blog_id    The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    // populate_roles() clears previous role definitions so we start over.
    $wp_roles = new WP_Roles();
    $siteurl = $home = untrailingslashit($url);
    if (!is_subdomain_install()) {
        if ('https' === parse_url(get_site_option('siteurl'), PHP_URL_SCHEME)) {
            $siteurl = set_url_scheme($siteurl, 'https');
        }
        if ('https' === parse_url(get_home_url(get_network()->site_id), PHP_URL_SCHEME)) {
            $home = set_url_scheme($home, 'https');
        }
    }
    update_option('siteurl', $siteurl);
    update_option('home', $home);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option(get_network()->site_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: 4.4

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU
 *
 * @global wpdb     $wpdb
 * @global WP_Roles $wp_roles
 *
 * @param int    $blog_id    The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles, $current_site;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    // populate_roles() clears previous role definitions so we start over.
    $wp_roles = new WP_Roles();
    $siteurl = $home = untrailingslashit($url);
    if (!is_subdomain_install()) {
        if ('https' === parse_url(get_site_option('siteurl'), PHP_URL_SCHEME)) {
            $siteurl = set_url_scheme($siteurl, 'https');
        }
        if ('https' === parse_url(get_home_url($current_site->blog_id), PHP_URL_SCHEME)) {
            $home = set_url_scheme($home, 'https');
        }
    }
    update_option('siteurl', $siteurl);
    update_option('home', $home);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option(get_current_site()->blog_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: 4.3

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU
 *
 * @global wpdb     $wpdb
 * @global WP_Roles $wp_roles
 *
 * @param int    $blog_id    The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    // populate_roles() clears previous role definitions so we start over.
    $wp_roles = new WP_Roles();
    $url = untrailingslashit($url);
    update_option('siteurl', $url);
    update_option('home', $url);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option(get_current_site()->blog_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: 4.1

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU
 *
 * @param int $blog_id The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    // populate_roles() clears previous role definitions so we start over.
    $wp_roles = new WP_Roles();
    $url = untrailingslashit($url);
    update_option('siteurl', $url);
    update_option('home', $url);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option(get_current_site()->blog_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: 0.1

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU
 * @uses make_db_current_silent()
 * @uses populate_roles()
 *
 * @param int $blog_id The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    // populate_roles() clears previous role definitions so we start over.
    $wp_roles = new WP_Roles();
    $url = untrailingslashit($url);
    update_option('siteurl', $url);
    update_option('home', $url);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option(get_current_site()->blog_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: 3.8

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU
 * @uses make_db_current_silent()
 * @uses populate_roles()
 *
 * @param int $blog_id The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    $wp_roles->_init();
    $url = untrailingslashit($url);
    update_option('siteurl', $url);
    update_option('home', $url);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option(get_current_site()->blog_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: 7.5

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU
 * @uses make_db_current_silent()
 * @uses populate_roles()
 *
 * @param int $blog_id The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles, $current_site;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors(false);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    $wp_roles->_init();
    $url = untrailingslashit($url);
    update_option('siteurl', $url);
    update_option('home', $url);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option($current_site->blog_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: .40

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU
 * @uses make_db_current_silent()
 * @uses populate_roles()
 *
 * @param int $blog_id The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles, $current_site;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    $wp_roles->_init();
    $url = untrailingslashit($url);
    update_option('siteurl', $url);
    update_option('home', $url);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option($current_site->blog_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: 7.4

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU
 * @uses make_db_current_silent()
 * @uses populate_roles()
 *
 * @param int $blog_id The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles, $current_site;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors(false);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    $wp_roles->_init();
    $url = untrailingslashit($url);
    update_option('siteurl', $url);
    update_option('home', $url);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option($current_site->blog_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: .33

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU
 * @uses make_db_current_silent()
 * @uses populate_roles()
 *
 * @param int $blog_id The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles, $current_site;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $suppress = $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors($suppress);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    $wp_roles->_init();
    $url = untrailingslashit($url);
    update_option('siteurl', $url);
    update_option('home', $url);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option($current_site->blog_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}

WordPress Version: 3.7

/**
 * Install an empty blog.
 *
 * Creates the new blog tables and options. If calling this function
 * directly, be sure to use switch_to_blog() first, so that $wpdb
 * points to the new blog.
 *
 * @since MU
 * @uses make_db_current_silent()
 * @uses populate_roles()
 *
 * @param int $blog_id The value returned by insert_blog().
 * @param string $blog_title The title of the new site.
 */
function install_blog($blog_id, $blog_title = '')
{
    global $wpdb, $wp_roles, $current_site;
    // Cast for security
    $blog_id = (int) $blog_id;
    require_once ABSPATH . 'wp-admin/includes/upgrade.php';
    $wpdb->suppress_errors();
    if ($wpdb->get_results("DESCRIBE {$wpdb->posts}")) {
        die('<h1>' . __('Already Installed') . '</h1><p>' . __('You appear to have already installed WordPress. To reinstall please clear your old database tables first.') . '</p></body></html>');
    }
    $wpdb->suppress_errors(false);
    $url = get_blogaddress_by_id($blog_id);
    // Set everything up
    make_db_current_silent('blog');
    populate_options();
    populate_roles();
    $wp_roles->_init();
    $url = untrailingslashit($url);
    update_option('siteurl', $url);
    update_option('home', $url);
    if (get_site_option('ms_files_rewriting')) {
        update_option('upload_path', UPLOADBLOGSDIR . "/{$blog_id}/files");
    } else {
        update_option('upload_path', get_blog_option($current_site->blog_id, 'upload_path'));
    }
    update_option('blogname', wp_unslash($blog_title));
    update_option('admin_email', '');
    // remove all perms
    $table_prefix = $wpdb->get_blog_prefix();
    delete_metadata('user', 0, $table_prefix . 'user_level', null, true);
    // delete all
    delete_metadata('user', 0, $table_prefix . 'capabilities', null, true);
    // delete all
}