wp_delete_site

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

WordPress Version: 5.5

/**
 * Deletes a site from the database.
 *
 * @since 5.1.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param int $site_id ID of the site that should be deleted.
 * @return WP_Site|WP_Error The deleted site object on success, or error object on failure.
 */
function wp_delete_site($site_id)
{
    global $wpdb;
    if (empty($site_id)) {
        return new WP_Error('site_empty_id', __('Site ID must not be empty.'));
    }
    $old_site = get_site($site_id);
    if (!$old_site) {
        return new WP_Error('site_not_exist', __('Site does not exist.'));
    }
    $errors = new WP_Error();
    /**
     * Fires before a site should be deleted from the database.
     *
     * Plugins should amend the `$errors` object via its `WP_Error::add()` method. If any errors
     * are present, the site will not be deleted.
     *
     * @since 5.1.0
     *
     * @param WP_Error $errors   Error object to add validation errors to.
     * @param WP_Site  $old_site The site object to be deleted.
     */
    do_action('wp_validate_site_deletion', $errors, $old_site);
    if (!empty($errors->errors)) {
        return $errors;
    }
    /**
     * Fires before a site is deleted.
     *
     * @since MU (3.0.0)
     * @deprecated 5.1.0
     *
     * @param int  $site_id The site ID.
     * @param bool $drop    True if site's table should be dropped. Default false.
     */
    do_action_deprecated('delete_blog', array($old_site->id, true), '5.1.0');
    /**
     * Fires when a site's uninitialization routine should be executed.
     *
     * @since 5.1.0
     *
     * @param WP_Site $old_site Deleted site object.
     */
    do_action('wp_uninitialize_site', $old_site);
    if (is_site_meta_supported()) {
        $blog_meta_ids = $wpdb->get_col($wpdb->prepare("SELECT meta_id FROM {$wpdb->blogmeta} WHERE blog_id = %d ", $old_site->id));
        foreach ($blog_meta_ids as $mid) {
            delete_metadata_by_mid('blog', $mid);
        }
    }
    if (false === $wpdb->delete($wpdb->blogs, array('blog_id' => $old_site->id))) {
        return new WP_Error('db_delete_error', __('Could not delete site from the database.'), $wpdb->last_error);
    }
    clean_blog_cache($old_site);
    /**
     * Fires once a site has been deleted from the database.
     *
     * @since 5.1.0
     *
     * @param WP_Site $old_site Deleted site object.
     */
    do_action('wp_delete_site', $old_site);
    /**
     * Fires after the site is deleted from the network.
     *
     * @since 4.8.0
     * @deprecated 5.1.0
     *
     * @param int  $site_id The site ID.
     * @param bool $drop    True if site's tables should be dropped. Default false.
     */
    do_action_deprecated('deleted_blog', array($old_site->id, true), '5.1.0');
    return $old_site;
}

WordPress Version: 5.1

/**
 * Deletes a site from the database.
 *
 * @since 5.1.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param int $site_id ID of the site that should be deleted.
 * @return WP_Site|WP_Error The deleted site object on success, or error object on failure.
 */
function wp_delete_site($site_id)
{
    global $wpdb;
    if (empty($site_id)) {
        return new WP_Error('site_empty_id', __('Site ID must not be empty.'));
    }
    $old_site = get_site($site_id);
    if (!$old_site) {
        return new WP_Error('site_not_exist', __('Site does not exist.'));
    }
    $errors = new WP_Error();
    /**
     * Fires before a site should be deleted from the database.
     *
     * Plugins should amend the `$errors` object via its `WP_Error::add()` method. If any errors
     * are present, the site will not be deleted.
     *
     * @since 5.1.0
     *
     * @param WP_Error $errors   Error object to add validation errors to.
     * @param WP_Site  $old_site The site object to be deleted.
     */
    do_action('wp_validate_site_deletion', $errors, $old_site);
    if (!empty($errors->errors)) {
        return $errors;
    }
    /**
     * Fires before a site is deleted.
     *
     * @since MU (3.0.0)
     * @deprecated 5.1.0
     *
     * @param int  $site_id The site ID.
     * @param bool $drop    True if site's table should be dropped. Default is false.
     */
    do_action_deprecated('delete_blog', array($old_site->id, true), '5.1.0');
    /**
     * Fires when a site's uninitialization routine should be executed.
     *
     * @since 5.1.0
     *
     * @param WP_Site $old_site Deleted site object.
     */
    do_action('wp_uninitialize_site', $old_site);
    if (is_site_meta_supported()) {
        $blog_meta_ids = $wpdb->get_col($wpdb->prepare("SELECT meta_id FROM {$wpdb->blogmeta} WHERE blog_id = %d ", $old_site->id));
        foreach ($blog_meta_ids as $mid) {
            delete_metadata_by_mid('blog', $mid);
        }
    }
    if (false === $wpdb->delete($wpdb->blogs, array('blog_id' => $old_site->id))) {
        return new WP_Error('db_delete_error', __('Could not delete site from the database.'), $wpdb->last_error);
    }
    clean_blog_cache($old_site);
    /**
     * Fires once a site has been deleted from the database.
     *
     * @since 5.1.0
     *
     * @param WP_Site $old_site Deleted site object.
     */
    do_action('wp_delete_site', $old_site);
    /**
     * Fires after the site is deleted from the network.
     *
     * @since 4.8.0
     * @deprecated 5.1.0
     *
     * @param int  $site_id The site ID.
     * @param bool $drop    True if site's tables should be dropped. Default is false.
     */
    do_action_deprecated('deleted_blog', array($old_site->id, true), '5.1.0');
    return $old_site;
}