Using WordPress ‘make_delete_blog’ PHP action

The make_delete_blog WordPress action is triggered when the ‘deleted’ status is added to a site.

Usage

add_action('make_delete_blog', 'my_custom_function');
function my_custom_function($site_id) {
  // your custom code here
}

Parameters

  • $site_id (int) – The site ID.

More information

See WordPress Developer Resources: make_delete_blog

Examples

Send an email notification when a site is deleted

Notify the administrator via email when a site is deleted.

add_action('make_delete_blog', 'email_admin_on_site_deletion');
function email_admin_on_site_deletion($site_id) {
  $admin_email = get_option('admin_email');
  $subject = 'Site Deleted';
  $message = 'A site with the ID ' . $site_id . ' has been deleted.';
  wp_mail($admin_email, $subject, $message);
}

Log site deletion in a custom file

Log the deletion of a site in a custom log file.

add_action('make_delete_blog', 'log_site_deletion');
function log_site_deletion($site_id) {
  $log_file = WP_CONTENT_DIR . '/site-deletions.log';
  $log_entry = date('Y-m-d H:i:s') . ' - Site ID ' . $site_id . ' deleted.' . PHP_EOL;
  file_put_contents($log_file, $log_entry, FILE_APPEND);
}

Remove custom user roles when a site is deleted

Delete custom user roles associated with a deleted site.

add_action('make_delete_blog', 'remove_custom_user_roles');
function remove_custom_user_roles($site_id) {
  switch_to_blog($site_id);
  remove_role('custom_role');
  restore_current_blog();
}

Delete custom site options when a site is deleted

Remove custom site options associated with a deleted site.

add_action('make_delete_blog', 'delete_custom_site_options');
function delete_custom_site_options($site_id) {
  switch_to_blog($site_id);
  delete_option('custom_option_name');
  restore_current_blog();
}

Unschedule a custom cron event when a site is deleted

Unschedule a custom cron event associated with a deleted site.

add_action('make_delete_blog', 'unschedule_custom_cron_event');
function unschedule_custom_cron_event($site_id) {
  switch_to_blog($site_id);
  wp_clear_scheduled_hook('custom_cron_event');
  restore_current_blog();
}