wp_unschedule_hook()
Deletes all cron tasks from the schedule for the specified hook. It does not matter what parameters were specified when registering the task.
Convenient to use with plugins when deactivating needs to clear all scheduled cron tasks.
The function is similar to wp_unschedule_event(). The difference between them is that this function removes all cron events at once; you only need to specify the name of the hook to which the events were attached, while wp_unschedule_event() removes only one cron task and also requires specifying the parameters passed to the function if they were specified when registering the cron task.
The function is almost identical to wp_clear_scheduled_hook(), only simpler; here you only need to specify the name of the hook, and all tasks will be completely removed. In contrast, in wp_clear_scheduled_hook(), you need to specify the name of the hook and the arguments passed to the function if they were specified when registering the cron task, and then only the corresponding cron tasks will be removed.
More about deleting cron tasks: WP Cron (scheduler) in WordPress
Hooks from the function
Returns
Int|false|WP_Error.
int— on successful execution, shows the number of canceled events.0— indicates that no events were registered for the hook.false— means that the cancellation (removal from the schedule) failed.
Usage
wp_unschedule_hook( $hook, $wp_error );
- $hook(string) (required)
- The name of the event (hook) whose execution needs to be removed from the cron schedule.
- $wp_error(true/false) (WP 5.7)
- true - will return a WP_Error object on failure.
Default: false
Examples
#1 Remove (Cancel) all Cron events of the CRON hook
wp_unschedule_hook( 'my_hourly_event' );
#2 Cancel all cron events when the plugin is deactivated
// when deactivating the plugin, cancel the previously created task
register_deactivation_hook( __FILE__, 'my_deactivation');
// add a task when the plugin is activated
register_activation_hook( __FILE__, 'my_activation' );
function my_deactivation() {
wp_unschedule_hook( 'my_hourly_event' );
}
function my_activation() {
// Delete all the same cron tasks, just in case, to add new ones from a "clean slate".
// This may be necessary if the same task was added incorrectly before
// (without checking if it already exists)
wp_unschedule_hook( 'my_hourly_event' );
// add a new cron task
wp_schedule_event( time(), 'hourly', 'my_hourly_event');
}
Changelog
| Since 4.9.0 | Introduced. |
| Since 5.1.0 | Return value added to indicate success or failure. |
| Since 5.7.0 | The $wp_error parameter was added. |