Provide a UI for managing Customizer changesets; save changesets as named drafts, schedule for publishing; inspect in admin and preview on frontend.
Customize Snapshots is the feature plugin which prototyped Customizer changesets; this feature was merged as part of WordPress 4.7. The term “snapshots” was chosen because the Customizer feature revolved around saving the state (taking a snapshot) of the Customizer at a given time so that the changes could be saved as a draft and scheduled for future publishing.
While the plugin’s technical infrastructure for changesets was merged in WordPress 4.7, the user interface still remains largely in the Customize Snapshots plugin, in which we will continue to iterate and prototype features to merge into core.
For a rundown of all the features, see the screenshots below as well as the 0.6 release video:
This plugin works particularly well with Customizer Browser History, which ensures that URL in the browser corresponds to the current panel/section/control that is expanded, as well as the current URL and device being previewed.
Requires PHP 5.3+. Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.
The “Save & Publish” button becomes a combo-button that allows you to select the status for the changeset when saving. In addition to publishing, a changeset can be saved as a permanent draft (as opposed to just an auto-draft), pending review, scheduled for future publishing. A revision is made each time you press the button.
For non-administrator users (who lack the new customize_publish
capability) the “Publish” button is replaced with a “Submit” button. This takes the changeset and puts it into a pending status.
When selecting to schedule a changeset, the future publish date can be supplied. Changesets can be supplied a name which serves like a commit message.
When selecting Publish, a confirmation appears. Additionally, a link is shown which allows you to browse the frontend with the changeset applied. This preview URL can be shared with authenticated and non-authenticated users alike.
The admin bar shows information about the current changeset when previewing the changeset on the frontend.
The Customize link is promoted to the top in the admin menu; a link to list all changesets is also added.
The Customize link in the admin bar likewise gets a submenu item to link to the changesets post list.
The Changesets admin screen lists all of the changeset posts that have been saved or published. Row actions provide shortcuts to preview changeset on frontend, open changeset in Customizer for editing, or inspect the changeset's contents on the edit post screen.
When excerpts are shown in the post list table, the list of settings that are contained in each changeset are displayed.
Opening a changeset's edit post screen shows which settings are contained in the changeset and what their values are. Settings may be removed from a changeset here. A changeset can also be scheduled or published from here just as one would do for any post, and the settings will be saved once the changeset is published. Buttons are also present to preview the changeset on the frontend and to open the changeset in the Customizer for further revisions.
Each time a user saves changes to an existing changeset, a new revision will be stored (if revisions are enabled in WordPress). Users' contributions to a given changeset can be inspected here and even reverted prior to publishing.
Multiple changesets can be merged into a single changeset, allowing multiple users' work to be combined for previewing together and publishing all at once.
post-new.php
to Customizer. See #156.Props: Sayed Taqui (@sayedwp), Weston Ruter (@westonruter), Miina Sikk (@miina), Derek Herman (@valendesigns), Ryan Kienstra (@kienstra), Anne Louise Currie (@alcurrie).
See issues and PRs in milestone and 0.6.2...0.7.0
commit log.
js/compat
directory (only applies to WP<4.7). See #144.See full commit log: 0.6.1...0.6.2
See issues and PRs in milestone.
option
settings when publishing a changeset outside of the Customizer, such as from the edit post admin screen. See #137, #138.See full commit log: 0.6.0...0.6.1
See issues and PRs in milestone.
See full commit log: 0.5.2...0.6.0
See issues and PRs in milestone.
Props: Sayed Taqui (@sayedwp), Utkarsh Patel (@PatelUtkarsh), Weston Ruter (@westonruter), Ryan Kienstra (@kienstra), Luke Gedeon (@lgedeon), Derek Herman (@valendesigns).
See full commit log: 0.5.1...0.5.2
Issues in milestone: milestone:0.5.2
Props: Weston Ruter (@westonruter), Utkarsh Patel (@PatelUtkarsh)
Customize_Snapshot
instance as second param to customize_snapshot_save
filter. See #77.customize_publish
. See #74.See full commit log: 0.5.0...0.5.1
Issues in milestone: milestone:0.5.1
Props: Utkarsh Patel (@PatelUtkarsh), Luke Gedeon (@lgedeon), Weston Ruter (@westonruter)
Added:
customize_snapshot_uuid
query param to the current URL being previewed and optioning a new window. (#57)customize_snapshot_uuid
param into all links when viewing a snapshot on the frontend. This allows the frontend to be browsed as normally with the snapshot context retained. In this mode, the admin bar shows links for returning to the Customizer, for inspecting the snapshot in the admin, and for existing the snapshot preview. If a user happened to navigate to a URL without the snapshot UUID param, then the admin bar will prompt for restoring the snapshot session. (#47, #70)customize_snapshot_uuid
param into the request via jQuery.ajaxPrefilter
. When in the Customizer preview, the Ajax requests are also intercepted by jQuery.ajaxPrefilter
: if they are GET
they get converted to POST
with X-HTTP-Method-Override
header added, and the customized
data is amended to the request. Requests to the WP REST API, Admin Ajax, and custom endpoints should all have the Customizer state reflected in the responses. (#65, #70)customize_snapshot_uuid
hidden form input. When in the Customizer preview, forms with a GET
method get intercepted and the form data gets serialized and added to the action
and then navigated to like a normal link. Forms with POST
will continue to no-op when submitted in the Customizer (and their submit buttons will have not-allowed
cursor). This fixes a long-standing Trac ticket #20714 “Theme customizer: Impossible to preview a search results page”. (#72)Fixed:
Post_Type
class. (#59)customize_refresh_nonces
filter to export snapshot nonce. (#59)generate_snapshot_uuid
request by returning new UUID in saving response. (#59)can_preview
method: only users who have the setting’s capability can write to the snapshot, so everyone should be able to freely preview what has been stored there. (#26, #59)get_permalink()
returns the frontend URL for the site with the customize_snapshot_uuid
param added.Removed:
scope
parameter has been removed, as has storing non-dirty
settings in a snapshot. (#59)See full commit log: 0.4.0...0.5.0
Issues in milestone: milestone:0.5.0
Props: Weston Ruter (@westonruter), Utkarsh Patel (@PatelUtkarsh), Derek Herman (@valendesigns), Miina Sikk (@miina), Sayed Taqui (@sayedwp)
Added:
scope
feature (Issue #42)customize_publish
capability) to be able to make snapshots and save them, and then submit them for review once ready (PR #38).Fixed:
post_content
instead of post_content_filtered
(Issue #25, PRs #36, #43). This breaks backwards compatibility with existing snapshots.customize-snapshots
JS dependency from customize-widgets
to customize-controls
(PR #14).wp_slash()
instead of add_magic_quotes()
when loading the snapshot post vars (PR #23).dev-lib
.See full commit log: 0.3.1...0.4.0
Issues/PRs in release: milestone:0.4.0
Props: Weston Ruter (@westonruter), Derek Herman (@valendesigns), Luke Carbis (@lukecarbis)
dev-lib
.$wp_customize
will be set on the front-end.dev-lib
.wp_insert_post()
to prevent loss of slashes.customize_publish
capability.