The ‘pre_reschedule_event’ filter allows you to modify or hijack the rescheduling process of a recurring event in WordPress. If a non-null value is returned, the normal rescheduling process will be bypassed and the filtered value will be used instead.
Usage
add_filter('pre_reschedule_event', 'your_function_name', 10, 3); function your_function_name($pre, $event, $wp_error) { // Your custom code here return $pre; }
Parameters
- $pre: null|bool|WP_Error – The value to return instead. Default is null, which continues the normal event rescheduling process.
- $event: object – An object containing the event’s data.
- $wp_error: bool – Determines if a WP_Error should be returned on failure.
Examples
Disable event rescheduling for a specific hook
add_filter('pre_reschedule_event', 'disable_specific_hook_reschedule', 10, 3); function disable_specific_hook_reschedule($pre, $event, $wp_error) { if ($event->hook == 'my_custom_hook') { return false; } return $pre; }
This code disables the rescheduling of an event with the hook ‘my_custom_hook’ by returning false.
Reschedule event to a different time
add_filter('pre_reschedule_event', 'reschedule_event_different_time', 10, 3); function reschedule_event_different_time($pre, $event, $wp_error) { if ($event->hook == 'my_custom_hook') { $event->timestamp += 3600; // Add 1 hour return true; } return $pre; }
This example changes the reschedule time for events with the hook ‘my_custom_hook’ by adding an extra hour to their timestamp.
Log event rescheduling
add_filter('pre_reschedule_event', 'log_event_rescheduling', 10, 3); function log_event_rescheduling($pre, $event, $wp_error) { error_log("Event '{$event->hook}' is being rescheduled."); return $pre; }
This code logs a message in the error log whenever an event is rescheduled.
Prevent event rescheduling on weekends
add_filter('pre_reschedule_event', 'prevent_weekend_reschedule', 10, 3); function prevent_weekend_reschedule($pre, $event, $wp_error) { $weekday = date('w', $event->timestamp); if ($weekday == 0 || $weekday == 6) { // 0 for Sunday, 6 for Saturday return false; } return $pre; }
This example prevents events from being rescheduled on weekends by returning false if the event’s timestamp falls on a Saturday or Sunday.
Set a maximum number of event occurrences
add_filter('pre_reschedule_event', 'limit_event_occurrences', 10, 3); function limit_event_occurrences($pre, $event, $wp_error) { $max_occurrences = 10; if ($event->hook == 'my_custom_hook') { $occurrences = (int) get_option('my_custom_hook_occurrences', 0); if ($occurrences >= $max_occurrences) { return false; } update_option('my_custom_hook_occurrences', ++$occurrences); } return $pre; }
This code limits the number of occurrences for events with the hook ‘my_custom_hook’ to a maximum of 10. It does this by storing and updating the occurrences count in a WordPress option. If the event has already occurred 10 times or more, it will not be rescheduled.