Plugin Directory

Test out the new Plugin Directory and let us know what you think.

Customize Snapshots

Allow Customizer states to be drafted, and previewed with a private URL.

0.6.0 RC1 - 2017-02-06

See issues and PRs in milestone.

See full commit log: 0.5.2...0.6.0-rc1

Props: Utkarsh Patel (@PatelUtkarsh), Sayed Taqui (@sayedwp), Weston Ruter (@westonruter), Ryan Kienstra (@kienstra), Luke Gedeon (@lgedeon).

0.5.2 - 2016-08-17

  • Fixed: Prevent enqueueing frontend JS in the customizer preview. This was erroneously causing the customize_snapshot_uuid param to get injected into links in the preview. See #80.
  • Fixed: Ensure that Update button gets disabled and reset to Save once changes have been published. See #83.

See full commit log: 0.5.1...0.5.2

Issues in milestone: milestone:0.5.2

Props: Weston Ruter (@westonruter), Utkarsh Patel (@PatelUtkarsh)

0.5.1 - 2016-08-23

  • Added: Pass Customize_Snapshot instance as second param to customize_snapshot_save filter. See #77.
  • Fixed: Restrict user from publishing or scheduling a snapshot unless they can customize_publish. See #74.
  • Fixed: Fix logic for when to show the snapshot publish error admin notice and show underlying error codes when there are validity errors. See #79.

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)

0.5.0 - 2016-08-11


  • Allow snapshot posts to be published from the admin, and thus also scheduled for publication. Customizer settings get saved when a snapshot post transitions to the publish status. If any of the settings are unrecognized or invalid, none of the settings are saved and the status gets kicked back to pending with error messages explaining the problem(s). Published snapshots are considered "locked" and the UI for updating them is hidden, aside from trash. (#15, #62, #59)
  • Add UI for scheduling for scheduling a snapshot when inside the Customizer. When a future date is selected, the “Save” button becomes “Schedule”. (#68)
  • Add link in Customizer to access edit post screen. (#59)
  • Add initial read-only REST API endpoints for snapshots. (#63, #59)
  • Ensure that setting validations are handled in snapshot requests. If any settings are invalid, the snapshot save will be rejected, invoking the same behavior as when attempting to publish invalid settings. (#59, #54, #31)
  • Add link in Customizer to view the snapshot applied to the frontend, adding the customize_snapshot_uuid query param to the current URL being previewed and optioning a new window. (#57)
  • Add link in snapshot edit post screen to view snapshot applied to the frontend. (#49, #52)
  • Add link in Customizer to access the snapshot's edit post admin screen, allowing the snapshot's state to be inspected. (#48, #51)
  • Inject the 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)
  • Inject the current Customizer state into Ajax requests. When viewing a snapshot on the frontend this is done by inserting the 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)
  • Also, inject the current Customizer state into form submissions. When viewing a snapshot on the frontend this is done by inserting a 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)


  • Changes to nav menus, nav menu items, and nav menu locations can now be saved to snapshots, previewed on the frontend, and published like other settings in a snapshot. (#2, #55, #56)
  • Refactor codebase, including new Post_Type class. (#59)
  • Use customize_refresh_nonces filter to export snapshot nonce. (#59)
  • Eliminate generate_snapshot_uuid request by returning new UUID in saving response. (#59)
  • Clear up distinction between previewing vs saving values in a snapshot. Remove the 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)
  • Ensuring that snapshots UI isn't loaded if a theme switch is happening; prevent Save & Activate button from going missing. (#28, #59)
  • Ensure that get_permalink() returns the frontend URL for the site with the customize_snapshot_uuid param added.


  • The 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)

0.4.0 - 2016-06-11


  • Improved UX by removing save/update dialogs, changing the Snapshot button text to “Save” & “Update” for a more streamlined experience by removing the “full” snapshot option. (Issues #13, #42, PR #30)
  • Snapshot UUID is dynamically added to the Customizer URL when a snapshot is first saved and it is stripped from the URL once the settings are published (and the snapshot is published), at which point the snapshot is “frozen”. (Issue #37, PR #40).
  • Update button can now be shift-clicked to open the snapshot on the frontend in a new window.
  • Eliminate the storage of non-dirty settings in a Snapshot, which deprecates the scope feature (Issue #42)
  • Support listing snapshots in the admin and inspecting their contents WP Admin UI, with shortcuts to open snapshot in Customizer, viewing the list of settings contained in a snapshot from the excerpt in post list view (Issue #45, PRs #38, #46).
  • Introduce pending snapshots for users who are not administrators (who lack the customize_publish capability) to be able to make snapshots and save them, and then submit them for review once ready (PR #38).
  • Added revisions for snapshots so that changes to a snapshot made before the time it is published can be tracked.
  • New banner image and icon (Issue #24, PR #27).
  • Bumped minimum WordPress version to 4.5.


  • Store content in post_content instead of post_content_filtered (Issue #25, PRs #36, #43). This breaks backwards compatibility with existing snapshots.
  • Replace customize-snapshots JS dependency from customize-widgets to customize-controls (PR #14).
  • Ensure that widget actions and filters are added when previewing snapshots from the front-end (Issue #34, PR #33).
  • Use wp_slash() instead of add_magic_quotes() when loading the snapshot post vars (PR #23).
  • Update 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)


  • Fix additional WordPress VIP issues.
  • Update dev-lib.
  • Update Coveralls.


  • Initialize Snapshots before Widget Posts so that $wp_customize will be set on the front-end.
  • Fix WordPress VIP PHPCS issues.
  • Update dev-lib.
  • Remove unused button markup in dialog.


  • Fix AYS confirmation if the snapshot state is saved.
  • Register dynamic settings to ensure that snapshot settings are recognized in the post values.
  • Slash input for wp_insert_post() to prevent loss of slashes.


  • Added the customize_publish capability.
  • Separate "Save" & "Publish" buttons.


  • Fix widget preview.


  • Initial release.

Requires: 4.5.3 or higher
Compatible up to: 4.7.2
Last Updated: 2 weeks ago
Active Installs: 40+


5 out of 5 stars


1 of 1 support threads in the last two months have been marked resolved.

Got something to say? Need help?


Not enough data

0 people say it works.
0 people say it's broken.

100,1,1 100,1,1