The deactivate_blog WordPress PHP action fires before a network site is deactivated, allowing you to execute custom code when this event occurs.
Usage
add_action('deactivate_blog', 'my_custom_function', 10, 1);
function my_custom_function($id) {
// your custom code here
return $id;
}
Parameters
- $id (int) – The ID of the site being deactivated.
More information
See WordPress Developer Resources: deactivate_blog
Examples
Send an email when a site is deactivated
Send an email to the administrator when a site is deactivated.
add_action('deactivate_blog', 'send_email_on_deactivation', 10, 1);
function send_email_on_deactivation($id) {
$admin_email = get_option('admin_email');
$subject = 'Site Deactivated';
$message = "Site with ID: $id has been deactivated.";
wp_mail($admin_email, $subject, $message);
}
Log site deactivation
Log site deactivation events in a custom log file.
add_action('deactivate_blog', 'log_site_deactivation', 10, 1);
function log_site_deactivation($id) {
$log_file = WP_CONTENT_DIR . '/deactivation_log.txt';
$current_time = current_time('mysql');
$log_entry = "Site ID: $id was deactivated on $current_time\n";
file_put_contents($log_file, $log_entry, FILE_APPEND);
}
Unpublish all posts on deactivation
Unpublish all posts when a site is deactivated.
add_action('deactivate_blog', 'unpublish_posts_on_deactivation', 10, 1);
function unpublish_posts_on_deactivation($id) {
switch_to_blog($id);
$args = array('post_type' => 'post', 'post_status' => 'publish');
$posts = get_posts($args);
foreach ($posts as $post) {
wp_update_post(array('ID' => $post->ID, 'post_status' => 'draft'));
}
restore_current_blog();
}
Disable user accounts on site deactivation
Disable all user accounts associated with the site when it is deactivated.
add_action('deactivate_blog', 'disable_users_on_deactivation', 10, 1);
function disable_users_on_deactivation($id) {
switch_to_blog($id);
$users = get_users();
foreach ($users as $user) {
update_user_meta($user->ID, 'account_disabled', true);
}
restore_current_blog();
}
Remove site-specific customizations
Remove site-specific customizations from the options table when the site is deactivated.
add_action('deactivate_blog', 'remove_customizations_on_deactivation', 10, 1);
function remove_customizations_on_deactivation($id) {
switch_to_blog($id);
delete_option('my_custom_theme_options');
restore_current_blog();
}