The delete_widget WordPress PHP action fires immediately after a widget has been marked for deletion.
Usage
add_action('delete_widget', 'my_custom_delete_widget_function', 10, 3); function my_custom_delete_widget_function($widget_id, $sidebar_id, $id_base) { // your custom code here }
Parameters
$widget_id
: string – ID of the widget marked for deletion.$sidebar_id
: string – ID of the sidebar the widget was deleted from.$id_base
: string – ID base for the widget.
More information
See WordPress Developer Resources: delete_widget
Examples
Log widget deletion
Log the deletion of a widget for debugging purposes.
add_action('delete_widget', 'log_widget_deletion', 10, 3); function log_widget_deletion($widget_id, $sidebar_id, $id_base) { error_log("Widget ({$widget_id}) with ID base ({$id_base}) deleted from sidebar ({$sidebar_id})."); }
Remove widget-related data
Remove any related data stored in the database when a widget is deleted.
add_action('delete_widget', 'remove_widget_related_data', 10, 3); function remove_widget_related_data($widget_id, $sidebar_id, $id_base) { // Delete related data for the widget delete_option("my_plugin_widget_{$widget_id}_data"); }
Send an email notification
Send an email notification to the admin when a widget is deleted.
add_action('delete_widget', 'send_widget_deletion_notification', 10, 3); function send_widget_deletion_notification($widget_id, $sidebar_id, $id_base) { $admin_email = get_option('admin_email'); $subject = "Widget Deleted: {$widget_id}"; $message = "The widget with ID: {$widget_id}, ID base: {$id_base} has been deleted from the sidebar: {$sidebar_id}."; wp_mail($admin_email, $subject, $message); }
Update widget count
Update a custom widget counter when a widget is deleted.
add_action('delete_widget', 'update_widget_count', 10, 3); function update_widget_count($widget_id, $sidebar_id, $id_base) { $count = get_option('my_plugin_widget_count', 0); update_option('my_plugin_widget_count', $count - 1); }
Trigger a custom action
Trigger a custom action when a specific widget is deleted.
add_action('delete_widget', 'trigger_custom_action', 10, 3); function trigger_custom_action($widget_id, $sidebar_id, $id_base) { if ($id_base === 'my_custom_widget') { do_action('my_custom_widget_deleted', $widget_id, $sidebar_id); } }