The delete_option_{$option} WordPress PHP action fires after a specific option has been deleted.
Usage
add_action('delete_option_{your_option_name}', 'your_custom_function');
function your_custom_function() {
// your custom code here
}
Parameters
$option(string): Name of the deleted option.
More information
See WordPress Developer Resources: delete_option_{$option}
Examples
Log option deletion
Log the deletion of a custom option named “my_custom_option” to a log file.
add_action('delete_option_my_custom_option', 'log_option_deletion');
function log_option_deletion() {
// log the deletion of the option to a file
error_log("my_custom_option deleted at " . date('Y-m-d H:i:s') . "\n", 3, "/path/to/your_log_file.log");
}
Notify admin on option deletion
Send an email notification to the site administrator when the “email_notify_option” is deleted.
add_action('delete_option_email_notify_option', 'notify_admin_on_option_deletion');
function notify_admin_on_option_deletion() {
// send an email to the admin
$admin_email = get_option('admin_email');
wp_mail($admin_email, 'Option Deleted', 'The email_notify_option has been deleted.');
}
Remove associated post meta on option deletion
Delete associated post meta when the “related_post_meta_option” is deleted.
add_action('delete_option_related_post_meta_option', 'remove_associated_post_meta');
function remove_associated_post_meta() {
// delete the associated post meta
delete_post_meta_by_key('related_post_meta_key');
}
Clear transient cache on option deletion
Clear the transient cache when the “cache_option” is deleted.
add_action('delete_option_cache_option', 'clear_transient_cache');
function clear_transient_cache() {
// clear the transient cache
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->options} WHERE option_name LIKE '_transient_%'");
}
Delete related user meta on option deletion
Delete related user meta when the “related_user_meta_option” is deleted.
add_action('delete_option_related_user_meta_option', 'delete_related_user_meta');
function delete_related_user_meta() {
// delete the related user meta
global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->usermeta} WHERE meta_key = 'related_user_meta_key'");
}