wpmu_delete_blog( int $blog_id, bool $drop = false )

Delete a site.


Parameters Parameters

$blog_id

(int) (Required) Site ID.

$drop

(bool) (Optional) True if site's database tables should be dropped. Default is false.

Default value: false


Top ↑

Source Source

File: wp-admin/includes/ms.php

function wpmu_delete_blog( $blog_id, $drop = false ) {
	global $wpdb;

	$switch = false;
	if ( get_current_blog_id() != $blog_id ) {
		$switch = true;
		switch_to_blog( $blog_id );
	}

	$blog = get_site( $blog_id );

	$current_network = get_network();

	// If a full blog object is not available, do not destroy anything.
	if ( $drop && ! $blog ) {
		$drop = false;
	}

	// Don't destroy the initial, main, or root blog.
	if ( $drop && ( 1 == $blog_id || is_main_site( $blog_id ) || ( $blog->path == $current_network->path && $blog->domain == $current_network->domain ) ) ) {
		$drop = false;
	}

	$upload_path = trim( get_option( 'upload_path' ) );

	// If ms_files_rewriting is enabled and upload_path is empty, wp_upload_dir is not reliable.
	if ( $drop && get_site_option( 'ms_files_rewriting' ) && empty( $upload_path ) ) {
		$drop = false;
	}

	if ( $drop ) {
		wp_delete_site( $blog_id );
	} else {
		/** This action is documented in wp-includes/ms-blogs.php */
		do_action_deprecated( 'delete_blog', array( $blog_id, false ), '5.1.0' );

		$users = get_users(
			array(
				'blog_id' => $blog_id,
				'fields'  => 'ids',
			)
		);

		// Remove users from this blog.
		if ( ! empty( $users ) ) {
			foreach ( $users as $user_id ) {
				remove_user_from_blog( $user_id, $blog_id );
			}
		}

		update_blog_status( $blog_id, 'deleted', 1 );

		/** This action is documented in wp-includes/ms-blogs.php */
		do_action_deprecated( 'deleted_blog', array( $blog_id, false ), '5.1.0' );
	}

	if ( $switch ) {
		restore_current_blog();
	}
}


Top ↑

Changelog Changelog

Changelog
Version Description
5.1.0 Use wp_delete_site() internally to delete the site row from the database.
3.0.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

  1. Skip to note 1 content
    /**
     * Deletes a site from multi site network
     */
    $site_id = 2;
    if ( ! function_exists( 'wpmu_delete_blog' ) ) { 
        require_once ABSPATH . '/wp-admin/includes/ms.php'; 
    }
    $drop = true; 
    wpmu_delete_blog( $site_id, $drop );
     
    if ( $drop ) {
    	echo "Site deleted successfully";
    } else {
    	$status = get_blog_status( $site_id, 'deleted' );
    	if ( $status ) {
    		echo "Site deleted successfully";
    	}
    }
    

You must log in before being able to contribute a note or feedback.