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');
}
}