Make WordPress Core

10/28/2016 02:56:16 AM (4 years ago)

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.

1 edited


  • trunk/src/wp-includes/customize/class-wp-customize-nav-menu-item-setting.php

    r38928 r38991  
    603603        }
     605        // Ensure nav menu item URL is set according to linked object.
     606        if ( ! empty( $post->object_id ) ) {
     607            if ( 'post_type' === $post->type ) {
     608                $post->url = get_permalink( $post->object_id );
     609            } elseif ( 'post_type_archive' === $post->type && ! empty( $post->object ) ) {
     610                $post->url = get_post_type_archive_link( $post->object );
     611            } elseif ( 'taxonomy' == $post->type && ! empty( $post->object ) ) {
     612                $post->url = get_term_link( (int) $post->object, $post->object );
     613            }
     614        }
    605616        /** This filter is documented in wp-includes/nav-menu.php */
    606617        $post->attr_title = apply_filters( 'nav_menu_attr_title', $post->attr_title );
Note: See TracChangeset for help on using the changeset viewer.