A small patch to fix future posting
|Reported by:||donncha||Owned by:||markjaquith|
Description (last modified by markjaquith)
Barry figured out that the cron entry the scheduler created was simply appended to the blog cron option. He suggested clearing the schedule before making a new one.
I verified this, and attached is a small patch that calls wp_clear_scheduled_hook() before creating the new schedule entry.
I tried adding wp_clear_scheduled_hook( $hook, $args ) to wp_schedule_single_event() but it didn't work. When $args is an array it doesn't seem to work.
You'll see from the patch I pass $post->ID directly as an int to the clear function. I'm not sure why that didn't work as an array.
How to replicate:
1) Publish a post with a date in the future
2) Edit that post and change the timestamp to a date further in the future and save the post
If you check the database, you will see that the timestamps have been updated correctly in the posts table, but in the options table, the cron option contains 2 objects in the array -- one with the old timestamp and one with the new one. When wp-cron runs, it checks that option and sees the older timestamp and therefore publishes the post at the incorrect time.
What should happen:
When the timestamp of a future post is changed, the entry in the cron option should be replaced, not appended to.
Change History (10)
- Priority changed from high to normal
- Severity changed from critical to normal
comment:5 markjaquith — 6 years ago
- Description modified (diff)
- Milestone set to 2.3 (trunk)
- Owner changed from anonymous to markjaquith
- Priority changed from normal to high
- Severity changed from normal to critical
- Status changed from new to assigned
- Version set to 2.3