Customize: Introduce starter content and site freshness state.
A theme can opt-in for tailored starter content to apply to the customizer when previewing the theme on a fresh install, when fresh_site
is at its initial 1
value. Starter content is staged in the customizer and does not go live unless the changes are published. Initial starter content is added to Twenty Seventeen.
- The
fresh_site
flag is cleared when a published post or page is saved, when widgets are modified, or when the customizer state is saved.
- Starter content is registered via
starter-content
theme support, where the argument is an array containing widgets
, posts
, nav_menus
, options
, and theme_mods
. Posts/pages in starter content are created with the auto-draft
status, re-using the page/post stubs feature added to nav menus and the static front page controls.
- A
get_theme_starter_content
filter allows for plugins to extend a theme's starter content.
- Starter content in themes can/should re-use existing starter content items in core by using named placeholders.
- Import theme starter content into customized state when fresh site.
- Prevent original_title differences from causing refreshes if title is present.
- Ensure nav menu item url is set according to object when previewing.
- Make sure initial saved state is false if there are dirty settings without an existing changeset.
- Ensure dirty settings are cleaned upon changeset publishing.
Props helen, westonruter, ocean90.
Fixes #38114, #38533.