Opened 15 years ago
Closed 15 years ago
#10468 closed defect (bug) (fixed)
wp_clear_scheduled_hook does not work when including an $args parameter
Reported by: | johnbillion | Owned by: | westi |
---|---|---|---|
Milestone: | 3.0 | Priority: | normal |
Severity: | normal | Version: | 2.8.1 |
Component: | Cron API | Keywords: | has-patch needs-testing |
Focuses: | Cc: |
Description
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 ( [0] => hello )
instead of this:
hello
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
.
Attachments (1)
Change History (8)
#2
@
15 years ago
- Cc scribu@… added
- Keywords cron wp-cron wp_clear_scheduled_hook removed
- Milestone changed from Unassigned to 2.9
#4
@
15 years ago
Makes perfect sense for this to take an $args array like the rest of them.
We may break some plugins though that have made it work for single arguments.
I wonder if we should put in some backwards compatibility code for them.
Patch.
wp_clear_scheduled_hook
can currently take multiple values for $args. My patch removes this functionality, but breaking backwards compatibility won't be an issue as this never worked anyway.