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.