Customize: Extend changesets to support autosave revisions with restoration notifications, and introduce a new default linear history mode for saved changesets (with a filter for opt-in to changeset branching).
- Autosaved changes made on top of
auto-draft changesets get written on top of the auto-draft itself, similar to how autosaves for posts will overwrite post drafts.
- Autosaved changes made to saved changesets (e.g.
draft, future) will be placed into an autosave revision for that changeset and that user.
- Opening the Customizer will now prompt the user to restore their most recent auto-draft changeset; if notification is dismissed or ignored then the auto-draft will be marked as dismissed and will not be prompted to user in a notification again.
- Customizer will no longer automatically supply the
changeset_uuid param in the customize.php URL when branching changesets are not active.
- If user closes Customizer explicitly via clicking on X link, then autosave auto-draft/autosave will be dismissed so as to not be prompted again.
- If there is a changeset already saved as a
draft or future (UI is forthcoming) then this changeset will now be autoloaded for the user to keep making additional changes. This is the linear model for changesets.
- To restore the previous behavior of the Customizer where each session started a new changeset, regardless of whether or not there was an existing changeset saved, there is now a
customize_changeset_branching hook which can be filtered to return true.
wp.customize.requestChangesetUpdate() now supports a second with options including autosave, title, and date.
- The window
blur event for customize.php has been replaced with a visibilitychange event to reduce autosave requests when clicking into preview window.
- Adds
autosaved and branching args to WP_Customize_Manager.
- The
changeset_uuid param for WP_Customize_Manager is extended to recognize a false value which causes the Customizer to defer identifying the UUID until after_setup_theme in the new WP_Customize_Manager::establish_loaded_changeset() method.
- A new
customize_autosaved query parameter can now be supplied which is passed into the autosaved arg in WP_Customize_Manager; this option is an opt-in to source data from the autosave revision, allowing a user to restore autosaved changes.
Props westonruter, dlh, sayedwp, JoshuaWold, melchoyce.
See #39896.