The deleted_theme WordPress PHP action fires immediately after a theme deletion attempt.
Usage
add_action('deleted_theme', 'your_custom_function', 10, 2); function your_custom_function($stylesheet, $deleted) { // your custom code here }
Parameters
$stylesheet
(string) – Stylesheet of the theme to delete.$deleted
(bool) – Whether the theme deletion was successful.
More information
See WordPress Developer Resources: deleted_theme
Examples
Log theme deletion
Log theme deletion attempts to a custom log file.
add_action('deleted_theme', 'log_theme_deletion', 10, 2); function log_theme_deletion($stylesheet, $deleted) { $log_message = $deleted ? "Theme deletion successful: " : "Theme deletion failed: "; $log_message .= $stylesheet; error_log($log_message, 3, "/path/to/your/logfile.log"); }
Send email notification
Send an email notification when a theme is deleted.
add_action('deleted_theme', 'send_theme_deletion_email', 10, 2); function send_theme_deletion_email($stylesheet, $deleted) { if ($deleted) { $to = '[email protected]'; $subject = 'Theme Deleted'; $message = 'The theme ' . $stylesheet . ' has been deleted.'; wp_mail($to, $subject, $message); } }
Update theme deletion counter
Update a custom counter for theme deletions.
add_action('deleted_theme', 'update_theme_deletion_counter', 10, 2); function update_theme_deletion_counter($stylesheet, $deleted) { if ($deleted) { $counter = (int) get_option('theme_deletion_counter', 0); $counter++; update_option('theme_deletion_counter', $counter); } }
Display an admin notice
Display a custom admin notice after a theme is deleted.
add_action('deleted_theme', 'show_theme_deletion_notice', 10, 2); function show_theme_deletion_notice($stylesheet, $deleted) { $notice = $deleted ? "Theme deletion successful: " : "Theme deletion failed: "; $notice .= $stylesheet; set_transient('theme_deletion_notice', $notice, 60); } add_action('admin_notices', 'display_theme_deletion_notice'); function display_theme_deletion_notice() { $notice = get_transient('theme_deletion_notice'); if ($notice) { echo '<div class="notice notice-success is-dismissible"><p>' . $notice . '</p></div>'; delete_transient('theme_deletion_notice'); } }
Perform cleanup tasks
Perform cleanup tasks after a theme is deleted.
add_action('deleted_theme', 'perform_cleanup_tasks', 10, 2); function perform_cleanup_tasks($stylesheet, $deleted) { if ($deleted) { // Clean up theme-specific options, transients, etc. delete_option('your_theme_option'); delete_transient('your_theme_transient'); } }