pre_get_scheduled_event is a WordPress PHP filter that allows you to modify or intercept the retrieval of a scheduled event before it happens.
Usage
add_filter('pre_get_scheduled_event', 'your_custom_function', 10, 4); function your_custom_function($pre, $hook, $args, $timestamp) { // your custom code here return $pre; }
Parameters
$pre
(null|false|object) – Value to return instead. Default null to continue retrieving the event.$hook
(string) – Action hook of the event.$args
(array) – Array containing each separate argument to pass to the hook’s callback function. These arguments are used to uniquely identify the event, even though they are not passed to a callback.$timestamp
(int|null) – Unix timestamp (UTC) of the event. Null to retrieve the next scheduled event.
More information
See WordPress Developer Resources: https://developer.wordpress.org/reference/hooks/pre_get_scheduled_event/
Examples
Bypass event retrieval
Bypass the retrieval of a specific event.
add_filter('pre_get_scheduled_event', 'bypass_specific_event', 10, 4); function bypass_specific_event($pre, $hook, $args, $timestamp) { if ($hook === 'my_custom_hook' && $args[0] === 'specific_arg') { return false; } return $pre; }
Modify event timestamp
Change the timestamp of a scheduled event.
add_filter('pre_get_scheduled_event', 'modify_event_timestamp', 10, 4); function modify_event_timestamp($pre, $hook, $args, $timestamp) { if ($hook === 'my_custom_hook') { $timestamp += 3600; // Add one hour } return $pre; }
Log events
Log events that match specific criteria.
add_filter('pre_get_scheduled_event', 'log_matching_events', 10, 4); function log_matching_events($pre, $hook, $args, $timestamp) { if ($hook === 'my_custom_hook' && count($args) === 2) { error_log("Matched event: {$hook}, args: " . implode(', ', $args) . ", timestamp: {$timestamp}"); } return $pre; }
Replace event with custom event
Replace the scheduled event with a custom event.
add_filter('pre_get_scheduled_event', 'replace_event_with_custom', 10, 4); function replace_event_with_custom($pre, $hook, $args, $timestamp) { if ($hook === 'my_custom_hook') { $custom_event = new stdClass; $custom_event->hook = 'my_replacement_hook'; $custom_event->args = $args; $custom_event->timestamp = $timestamp; return $custom_event; } return $pre; }
Cancel specific event
Cancel the scheduled event based on specific criteria.
add_filter('pre_get_scheduled_event', 'cancel_specific_event', 10, 4); function cancel_specific_event($pre, $hook, $args, $timestamp) { if ($hook === 'my_custom_hook' && $args[0] === 'cancel_this') { wp_unschedule_event($timestamp, $hook, $args); return false; } return $pre; }