wp_clear_scheduled_hook does not work when including an $args parameter
|Reported by:||johnbillion||Owned by:||westi|
The value for $args that gets passed from wp_clear_scheduled_hook to wp_unschedule_event gets changed and therefore nothing will get unscheduled as no jobs will have that argument.
The problem is that the value of the $args parameter is detected using array_slice( func_get_args(), 1 ) and this actually places the value of $args inside an array with one element with the value of $args.
The value of $args passed by wp_clear_scheduled_hook('my_hook','hello') to wp_unschedule_event will then look like this:
array (  => hello )
instead of this:
The function wp_clear_scheduled_hook is used with the $args parameter in core in three places:
- Inside wp_delete_post to clear any job which might try to publish a future post which has been deleted.
- Inside check_and_publish_future_post to clear any job which might try to republish a future post which has been published.
- Inside _transition_post_status to clear any job which might try to publish a future post which has gone back to draft status.
So according to this bug, these three areas cannot be functioning as expected, as they pass a value in the $args parameter to wp_clear_scheduled_hook.
Change History (8)
- Cc scribu@… added
- Keywords cron wp-cron wp_clear_scheduled_hook removed
- Milestone changed from Unassigned to 2.9
- Keywords changed from has-patch, needs-testing to has-patch needs-testing