The cron_unschedule_event_error WordPress PHP action fires when an error occurs while unscheduling a cron event.
Usage
add_action('cron_unschedule_event_error', 'your_custom_function', 10, 3); function your_custom_function($result, $hook, $v) { // Your custom code here return $result; }
Parameters
- $result (WP_Error) – The WP_Error object.
- $hook (string) – Action hook to execute when the event is run.
- $v (array) – Event data.
More information
See WordPress Developer Resources: cron_unschedule_event_error
Examples
Log the error message
Log the error message when an unscheduling error occurs.
add_action('cron_unschedule_event_error', 'log_unschedule_error', 10, 3); function log_unschedule_error($result, $hook, $v) { error_log("Error unscheduling {$hook}: " . $result->get_error_message()); return $result; }
Send an email notification
Send an email notification to the admin when an error occurs unscheduling an event.
add_action('cron_unschedule_event_error', 'email_unschedule_error', 10, 3); function email_unschedule_error($result, $hook, $v) { $admin_email = get_option('admin_email'); $subject = 'Cron Unschedule Error'; $message = "Error unscheduling {$hook}: " . $result->get_error_message(); wp_mail($admin_email, $subject, $message); return $result; }
Retry unscheduling the event
Retry unscheduling the event when an error occurs.
add_action('cron_unschedule_event_error', 'retry_unschedule_event', 10, 3); function retry_unschedule_event($result, $hook, $v) { if (wp_next_scheduled($hook, $v)) { wp_unschedule_event(wp_next_scheduled($hook, $v), $hook, $v); } return $result; }
Store unscheduling errors in a custom database table
Store unscheduling errors in a custom database table for further analysis.
add_action('cron_unschedule_event_error', 'store_unschedule_error', 10, 3); function store_unschedule_error($result, $hook, $v) { global $wpdb; $table_name = $wpdb->prefix . 'unschedule_errors'; $wpdb->insert( $table_name, array( 'hook' => $hook, 'error_message' => $result->get_error_message(), 'event_data' => json_encode($v), 'timestamp' => current_time('mysql'), ) ); return $result; }
Add a custom notice in the admin dashboard
Display a custom notice in the admin dashboard when an unscheduling error occurs.
add_action('cron_unschedule_event_error', 'add_unschedule_error_notice', 10, 3); function add_unschedule_error_notice($result, $hook, $v) { set_transient('unschedule_error_notice', $result->get_error_message(), 60); add_action('admin_notices', 'display_unschedule_error_notice'); return $result; } function display_unschedule_error_notice() { $error_message = get_transient('unschedule_error_notice'); if ($error_message) { ?> <div class="notice notice-error"> <p><?php echo "Error unscheduling cron event: " . esc_html($error_message); ?></p> </div> <?php delete_transient('unschedule_error_notice'); } }