WordPress.org

Make WordPress Core

Opened 2 months ago

Closed 9 days ago

#41336 closed defect (bug) (fixed)

Changeset saved with `publish` status and future date is not scheduled

Reported by: dlh Owned by: westonruter
Milestone: 4.9 Priority: normal
Severity: normal Version: 4.7
Component: Customize Keywords: has-patch
Focuses: Cc:

Description

The behavior of WP_Customize_Manager::save_changeset_post() differs from wp_insert_post() in how it handles a post date in the future with a post status of publish.

wp_insert_post() will keep the date and change the post status to future: https://github.com/WordPress/WordPress/blob/4.8-branch/wp-includes/post.php#L3161

whereas save_changeset_post() resets the date and publishes the changeset immediately: https://github.com/WordPress/WordPress/blob/4.8-branch/wp-includes/class-wp-customize-manager.php#L2510

I found this difference unexpected, although I apologize if I've overlooked discussions about it.

The attached patches propose different updates to save_changeset_post() that would try to reduce the discrepancy. One patch would switch the changeset status from publish to future when the changeset date is in the future, in the style of wp_insert_post(). The other would return a WP_Error to at least prevent the changeset from being published immediately.

Attachments (2)

41336.diff (1.4 KB) - added by dlh 2 months ago.
41336.2.diff (1.4 KB) - added by dlh 2 months ago.

Download all attachments as: .zip

Change History (4)

@dlh
2 months ago

@dlh
2 months ago

#1 @westonruter
6 weeks ago

  • Milestone changed from Awaiting Review to 4.9
  • Owner set to westonruter
  • Status changed from new to accepted

This makes sense to me.

#2 @westonruter
9 days ago

  • Resolution set to fixed
  • Status changed from accepted to closed

In 41372:

Customize: Align behavior of WP_Customize_Manager::save_changeset_post() with wp_insert_post() by setting status to future if supplied status is publish but date is future.

Props dlh.
Fixes #41336.

Note: See TracTickets for help on using tickets.