1,000+
November 14, 2017
September 17, 2014
This is a feature plugin intended to implement #34923: Introduce basic content authorship in the Customizer.
The goal for this plugin is to be able to expose the editing of posts and pages in the Customizer, allowing you to edit post data and postmeta for any number of posts, and preview the changes before saving them for others to see. This plugin was birthed out of the Widget Customizer feature-as-plugin project which was merged into WordPress Core: as widgets (in 3.9) and nav menus (4.3) can now be managed in the Customizer, so too should posts and pages be editable in the Customizer as well.
Did you know that changing the featured image actually makes the change live even before you save the post? This is very surprising/unexpected behavior. The only way to truly preview a change to a featured image is to use something like Customize Posts.
Likewise, did you know that changing a page template cannot be previewed from the post editor? When you change the selected page template, the change will not show up when you preview the page (see #11049). However, in Customize Posts you can preview changes to the page template just by changing the dropdown selection, and then you can see what your page would look like with the new template after the preview refreshes.
Most other changes to metaboxes containing data that gets saved to custom fields (postmeta) also get written when clicking the Preview button. The Customize Posts plugin provides a framework to edit postmeta in the Customizer with a live preview of the changes. (Fixing this underlying issue of incorrectly persisting postmeta when doing a preview is captured in #20299.)
As much as possible, the previewing of changes in Customize Posts utilizes the selective refresh capabilities introduced in WordPress 4.5. Not only does this mean it is faster to preview changes to posts and postmeta, but it also allows you to shift-click on an element to focus on the corresponding control in the Customizer pane. For example you can shift-click on the post title in the preview to focus on the post title control’s input field, or shift-click on a featured image to focus on the control’s button to open the media library.
Development of this plugin is done on GitHub. Pull requests welcome. Please see issues reported there before going to the plugin forum.
(This Customize Posts plugin is not to be confused with 10up’s Post Customizer.)
The following are listed in reverse chronological order. The first, more recent videos, show more polish.
[2016-04-28] New features in 0.5.0.
[2016-03-28] Previewing post from Post Edit screen.
[2016-03-05] Opening a draft post in the Customizer to preview title wrapping.
[2016-03-04] Demo featuring the WP visual rich text editor (TinyMCE), including the insertion of images from the media library. Post content can be edited in the Customizer and previewed in multiple contexts. For example, this allows you to preview how a Read More tag will appear when the post appears on a post list page, and you can navigate to the single post to continue previewing subsequent paragraphs. You can expand the editor into a full-screen mode to focus on writing and then quickly preview the changes on the site by toggling the editor. You can make changes to as many posts as you want, but none of the changes will go live until you hit Save & Publish: everything is previewed so there is no “save and surprise”.
[2016-03-03] Demonstration of integration with Customize Setting Validation (#34893) to gracefully handle failures to save due to post locking and concurrent user editing:
[2016-03-01] Demonstration of hooking into edit post links so that they actually work in the Customizer and expand the section to edit the given post (as opposed to the link doing nothing at all when clicked), as well as shift-clicking on the title and content (needs better discovery UI, see #27403):
No installation instructions provided.
No FAQ provided.
Fix saving of postmeta in scheduled changesets. See #375.
notifications.add
for new params accepted in 4.9. See #369.See issues and PRs in milestone and full release commit log.
See issues and PRs in milestone and full release commit log.
customize_action
template for a given post type’s panel to be defined via registered post type labels. Issue #343. PR #345.sessionStorage
and use changeset to save post editor screen data. Issue #338. PR #350.See issues and PRs in milestone and full release commit log.
Props Weston Ruter (@westonruter), Sayed Taqui (@sayedtaqui), Utkarsh Patel (@PatelUtkarsh), Jeffrey Paul (@jeffpaul), Zlatko Zlatev (@entr).
data-customize-post-id
attribute. PR #332.See issues and PRs in milestone and full release commit log.
See issues and PRs in milestone and full release commit log.
customize_save_response
unless changeset is being published (PR #317)isLinkPrewable
function (PR #318)See issues and PRs in milestone and full release commit log.
Props Weston Ruter (@westonruter), Sayed Taqui (@sayedwp), Utkarsh Patel (@PatelUtkarsh).
customized
state is included in the request, and allow for placeholder nav_menu_item
settings to be fetched. PR #299.$setting
context to customize_previewed_postmeta_rows
filter and add new customize_previewed_postmeta_rows_{$setting->post_meta}
filter. PR #299.Props Weston Ruter (@westonruter), Utkarsh Patel (@PatelUtkarsh).
See issues and PRs in milestone and full release commit log.
Fixed compatibility with Safari in the wp.customize.Posts.getCurrentTime()
method. See #293. Props Piotr Delawski (@delawski).
Added:
dropdown-pages
controls, such as the controls for page on front and page for posts. Adds startEditPageFlow
and startAddPageFlow
methods from the Customize Object Selector plugin. See #271 and PRs #272, #284, #285.original_title
property. If a nav menu item lacks its own title
and inherits from original_title
, post/page changes will now trigger nav menu selective refresh updates. See #156 and PR #288, #289.dropdown-pages
controls, in particular to the page on front and page for posts controls in the static front page section. See #153. PRs #190, #270, #275, #276.wp_list_pages()
. PR #256.WP_Query
query vars, including post meta queries, ensuring results have posts’ customized state applied as expected. This is a big improvement to ensure customized posts and postmeta will appear the same before or after saving the customized state. Previously, previewing WP_Query
results was very limited and often not accurate. As part of this, get_posts()
and any queries made with suppress_filters
on will be overridden to force filters to apply. See #246 and PR #248.WP_Customize_Postmeta_Setting
for representing non-single postmeta. Such settings are instantiated with a true single
arg and they require an array value. The customize_sanitize_{$setting_id}
filter will apply to each array item separately, as will the sanitize_meta()
call. PR #248.get_pages()
has the customized state applied. This enables support for wp_dropdown_pages()
(and thus the post parent control). See #241 and PR #250.posts
component to be filtered out to be disabled like other components (widgets
and nav_menus
). See #132 with PRs #219 and #258.SCRIPT_DEBUG
or do a build. PR #249.wp_transition_post_status()``when transitioning from
auto-draftto
customize-draft`. PR #266.Setting
objects in JS using a specific settingConstructor
if defined for a given setting type
when fetching settings. PR #286.Changed:
public
instead of show_ui
as default show_in_customizer
flag. See #264 and PR #265.Fixed:
page-attributes
). PR #227.notification.setting
instead of notification.data.setting
. PR #238.post_name
) between edit post screen and customize post preview. PR #239.post_author
is string in PHP but keep int in JS. PR #251.Removed:
customize_previewed_posts_for_query
filter since now unnecessary and irrelevant after refactor in #248.See issues and PRs in milestone and full release commit log
Props: Weston Ruter (@westonruter), Sayed Taqui (@sayedwp), Sunny Ratilal (@sunnyratilal), Ryan Kienstra (@kienstra), Eduard Maghakyan (@EduardMaghakyan).
Added:
register_post_type()
so that the names can be repurposed to be appropriate to the custom post type. (#195)Fixed:
ensurePosts
API call to fetch the settings over Ajax and create the relevant section. (#201)menu_order
if hierarchical. (#124)get_post_status()
. (#194)See full commit log: 0.6.1...0.7.0
Issues in milestone: milestone:0.7.0
Props: Weston Ruter (@westonruter), John Regan (@johnregan3), Sayed Taqui (@sayedwp), Utkarsh Patel (@PatelUtkarsh), Luke Gedeon (@lgedeon), Ahmad Awais (@ahmadawais), Derek Herman (@valendesigns), Piotr Delawski (@delawski)
js_value()
and use the settings json
method if available.comments_open
and pings_open
filters to the WP_Customize_Posts_Preview::add_preview_filters
method.purgeTrash
to ensure trashed post sections do not appear in the Customizer root panel after publishing changes.customize-draft
.customize-draft
status is always available to Customize Snapshots & wp-admin
map_meta_cap
auto-draft
and customize-draft
status posts when saving the trash post_status
edit_posts
capability for sectionsfocusControl
support for deferred-embedded
post section controlscustomized-posts
messages sent via selective-refresh
from effecting post-navigation
stateSee full commit log: 0.6.0...0.6.1
Issues in milestone: milestone:0.6.1
Props: Weston Ruter (@westonruter), Derek Herman (@valendesigns)
Added:
auto-draft
status in the DB so they will be garbage-collected if the Customizer is never saved. A new view link appears in the post section allowing a newly-created post to be navigated to easily without having to find the created post linked to in the preview. (Issues #48, #50, PR #134)trash
status support (Issues #40, #137, PR #152)-2
added, you’ll see that in the Control. Likewise, if a wp_insert_post_data
filter or content_save_pre
changes your data in some way, these will be shown in the post’s Customizer controls upon saving.plugins_url()
for each asset URL so that the plugin can be installed as a submodule without SCRIPT_DEBUG
(Issue #133)Fixed:
show_in_customizer
(PR #130)(no title)
placeholder to the post title control for new posts.See full commit log: 0.5.0...0.6.0
Issues in milestone: milestone:0.6
Props: Weston Ruter (@westonruter), Derek Herman (@valendesigns), Philip Ingram (@pingram3541), Daniel Bachhuber (@danielbachhuber), Stuart Shields (@stuartshields)
Added:
Fixed:
See v0.5 release post on Make XWP.
See full commit log: 0.4.2...0.5.0
Issues in milestone: milestone:0.5
Props: Weston Ruter (@westonruter), Derek Herman (@valendesigns), Luke Carbis (@lukecarbis), Mike Crantea (@mehigh), Stuart Shields (@stuartshields)
Restore stylesheet erroneously deleted during grunt deploy
.
publicly_queryable
as true
).customize-posts
message receiver instead of throwing them.show_in_customizer
arg for register_post_type()
, and let override condition on show_ui
~~and publicly_queryable
~~ being both true.Remove shim that implemented the customize_save_response
filter which was introduced in 4.2. The shim used a slightly different filter name and broke insertion of nav menu items in the Customizer.
Change method for registering scripts/styles to fix conflict w/ Jetpack. PR #26
Add compatibility with WordPress 4.1 now that the Customizer has a proper JS API.
Supply missing selected
attribute on post_status
dropdown.
Initial release on WordPress.org. Key new features:
customize
capability to authors and editors who normally can’t access the Customizer, so they can edit posts there.Version | Download | Type |
---|---|---|
0.9.1 | Download | Stable |
0.9.0 | Download | Stable |
0.8.7 | Download | Stable |
0.8.6 | Download | Stable |
0.8.5 | Download | Stable |
0.8.4 | Download | Stable |
0.8.3 | Download | Stable |
0.8.2 | Download | Stable |
0.8.1 | Download | Stable |
0.8.0 | Download | Stable |
0.7.0 | Download | Stable |
0.6.1 | Download | Stable |
0.6.0 | Download | Stable |
0.5.0 | Download | Stable |
0.4.2 | Download | Stable |
0.4.1 | Download | Stable |
0.4.0 | Download | Stable |
0.3.0 | Download | Stable |
0.2.4 | Download | Stable |
0.2.3 | Download | Stable |
0.2.2 | Download | Stable |
0.2.1 | Download | Stable |
Development | Download | Trunk |