The delete_theme WordPress PHP action fires immediately before a theme deletion attempt.
Usage
add_action('delete_theme', 'my_custom_function', 10, 1);
function my_custom_function($stylesheet) {
// your custom code here
}
Parameters
$stylesheet(string) – Stylesheet of the theme to delete.
More information
See WordPress Developer Resources: delete_theme
Examples
Log theme deletion
Log the deletion of a theme with a timestamp.
add_action('delete_theme', 'log_theme_deletion', 10, 1);
function log_theme_deletion($stylesheet) {
$log_message = 'Theme ' . $stylesheet . ' deleted on ' . date('Y-m-d H:i:s') . "\n";
error_log($log_message, 3, 'theme_deletion.log');
}
Send email notification
Send an email notification to the site administrator when a theme is deleted.
add_action('delete_theme', 'email_notification_theme_deletion', 10, 1);
function email_notification_theme_deletion($stylesheet) {
$to = get_option('admin_email');
$subject = 'Theme Deleted: ' . $stylesheet;
$message = 'The theme ' . $stylesheet . ' has been deleted.';
wp_mail($to, $subject, $message);
}
Backup theme files
Create a backup of the theme’s files before deletion.
add_action('delete_theme', 'backup_theme_files', 10, 1);
function backup_theme_files($stylesheet) {
$theme_directory = get_theme_root() . '/' . $stylesheet;
$backup_directory = WP_CONTENT_DIR . '/backups/themes/' . $stylesheet;
copy_directory($theme_directory, $backup_directory);
}
Update theme deletion record
Update a custom database table with a record of the deleted theme.
add_action('delete_theme', 'update_theme_deletion_record', 10, 1);
function update_theme_deletion_record($stylesheet) {
global $wpdb;
$table_name = $wpdb->prefix . 'theme_deletions';
$data = array('theme' => $stylesheet, 'deleted_at' => current_time('mysql'));
$wpdb->insert($table_name, $data);
}
Deactivate plugins dependent on the theme
Deactivate plugins that depend on the deleted theme.
add_action('delete_theme', 'deactivate_plugins_dependent_on_theme', 10, 1);
function deactivate_plugins_dependent_on_theme($stylesheet) {
$dependent_plugins = array(
'my-plugin/my-plugin.php'
);
if ($stylesheet === 'my-theme') {
foreach ($dependent_plugins as $plugin) {
deactivate_plugins($plugin);
}
}
}