Title: Starter content for themes in 4.7
Author: Helen Hou-Sandi
Published: November 30, 2016

---

 [  ](https://profiles.wordpress.org/helen/) [Helen Hou-Sandi](https://profiles.wordpress.org/helen/)
8:49 pm _on_ November 30, 2016     
Tags: [4.7 ( 124 )](https://make.wordpress.org/core/tag/4-7/),
[dev-notes ( 648 )](https://make.wordpress.org/core/tag/dev-notes/)   

# Starter content for themes in 4.7

One of the hardest things for people setting up sites with WordPress for the first
time is understanding what themes are and how a given theme can work for you, especially
when there’s no content there to visualize. There are also significant gaps between
local theme previews, screenshots, and .org previews. Even when there are easy-to-
use site customization tools, it is difficult to figure out where to start and what
things are going to be like.

To help users along that path, 4.7 introduces the concept of “starter content” –
theme-specific selections of content to help showcase a theme to users and serve
as a starting point for further setup of new sites. Starter content works especially
well in tandem with [visible edit shortcuts](https://make.wordpress.org/core/2016/11/10/visible-edit-shortcuts-in-the-customizer-preview/),
allowing users to not only see what content might work best where within a theme,
but from there to be able to jump to building off of that base without having to
initially spend time figuring out, say, which widgets areas map where.

### How it works

Starter content is applied and displayed upon entering the customizerCustomizer 
Tool built into WordPress core that hooks into most modern themes. You can use it
to preview and modify many of your site’s appearance settings., with no changes 
appearing on the live site until customizer changes are explicitly saved and published.
In 4.7, this initial view of a theme with starter content will only happen for “
fresh sites” – new installs that have not yet had any posts, pages, widgets, or 
customizer settings updated. This state is indicated in the `fresh_site` option 
with a value of `1`. The current limitation is in line with prioritizing initial
site setup for this release, and allows for themes to begin implementing content
and ensuring that there is a solid base before introducing more complicated logic
and UIUI User interface to “merge” starter content with existing content in a future
release ([#38624](https://core.trac.wordpress.org/ticket/38624)). That being said,
if two themes in a given fresh site both have starter content, if the starter content
from the first theme is applied and you make some changes to that starter content,
when you switch to the second theme the starter content from that theme will override
the starter content from the first theme only for the settings which have not been
modified. Also remember that theme mods are always theme-specific, so starter content
for theme switches will never be copied.

CoreCore Core is the set of software required to run WordPress. The Core Development
Team builds WordPress. provides a set of content that themes can select from (technical
details below). These include a variety of widgets, pages, and nav menu items (including
references for the pages), along with the ability to provide attachments, theme 
mods, and options. Any included images for attachments need to be from within a 
theme or pluginPlugin A plugin is a piece of software containing a group of functions
that can be added to a WordPress website. They can extend functionality or add new
features to your WordPress websites. WordPress plugins are written in the PHP programming
language and integrate seamlessly with WordPress. These can be free in the WordPress.
org Plugin Directory [https://wordpress.org/plugins/](https://wordpress.org/plugins/)
or can be cost-based plugin from a third-party. folder and cannot be loaded from
an external URLURL A specific web address of a website or web page on the Internet,
such as a website’s URL www.wordpress.org. Twenty Seventeen will ship with starter
content enabled; there are no plans to add the functionality to past default themes.

### How to use it

Themes define a subset of [core-provided starter content](https://core.trac.wordpress.org/browser/trunk/src/wp-includes/theme.php?rev=39373#L1910)
using `add_theme_support()` – let’s look at a breakdown of [how Twenty Seventeen does things](https://core.trac.wordpress.org/browser/trunk/src/wp-content/themes/twentyseventeen/functions.php?rev=39373#L106).
In its setup function hooked to `after_setup_theme`, we see an array with collections
of widgets, posts (pages), attachments, options, theme mods, and nav menus registered
as the starter content. The customizer looks for this `starter-content` at `after_setup_theme`
priority 100, so do make this call at that point or later:

`add_theme_support( 'starter-content', array( /*...*/ ) )`

#### Widgets

Each widgetWidget A WordPress Widget is a small block that performs a specific function.
You can add these widgets in sidebars also known as widget-ready areas on your web
page. WordPress widgets were originally created to provide a simple and easy-to-
use way of giving design and structure control of the WordPress theme to the user.
area ID corresponds to one sidebarSidebar A sidebar in WordPress is referred to 
a widget-ready area used by WordPress themes to display information that is not 
a part of the main content. It is not always a vertical column on the side. It can
be a horizontal rectangle below or above the content area, footer, header, or any
where in the theme. registered by the theme, with the contents of each widget area
array being a list of widget “symbols” that reference core-registered widget configurations.
Most default widgets are available (`archives`, `calendar`, `categories`, `meta`,`
recent-comments`, `recent-posts`, and `search`), as well as text widgets with business
hours (`text_business_info`) and a short prompt for an “about this site” style blurb(`
text_about`). Themes should place widgets based on what works best in that area –
for instance, business info in a footer widget of a business-centric theme, or a
nicely styled calendar widget in the sidebar of a blogblog (versus network, site).

Custom widgets can also be registered at the time of starter content registration
or later filtered in, which will be more likely the case for plugins, as `add_theme_support()`
for starter content will be overridden by any later calls.

    ```notranslate
    // Custom registration example
    add_theme_support( 'starter-content', array(
    	'widgets' => array(
    		'sidebar-1' => array(
    			'meta_custom' => array( 'meta', array(
    				'title' => 'Pre-hydrated meta widget.',
    			) ),
    		),
    	),
    );

    // Plugin widget added using filters
    function myprefix_starter_content_add_widget( $content, $config ) {
    	if ( isset( $content['widgets']['sidebar-1'] ) ) {
    		$content['widgets']['sidebar-1']['a_custom_widget'] = array(
    			'my_custom_widget', array(
    				'title' => 'A Special Plugin Widget',
    			),
    		);
    	}
    	return $content;
    }
    add_filter( 'get_theme_starter_content', 'myprefix_starter_content_add_widget', 10, 2 );
    ```

#### Posts (Pages)

Like widgets, core provides posts which can be referenced by symbols; all six currently
in the core set are pages, but the starter content APIAPI An API or Application 
Programming Interface is a software intermediary that allows programs to interact
with each other and share data in limited, clearly defined ways. can support various
post types (including attachments, which are defined and handled separately). The
symbols for the core-provided pages as of 4.7 are `home`, `about`, `contact`, `blog`,`
news`, and `homepage-section`. The pages references by `blog` and `news` are both
empty in the content area and are meant to be assigned as the page for posts (detailed
with options below). Imported posts can further be used as post IDs when referenced
using the symbol of the item within double curly braces, e.g. `{{home}}` for the
static front pageStatic Front Page A WordPress website can have a dynamic blog-like
front page, or a “static front page” which is used to show customized content. Typically
this is the first page you see when you visit a site url, like wordpress.org for
example. option.

Posts, like widgets, are also easily customizable, either by overriding specific
fields for a predefined item or by defining a new custom one entirely. The available
fields are `post_type`, `post_title`, `post_excerpt`, `post_name` (slug), `post_content`,`
menu_order`, `comment_status`, `thumbnail` (featured imageFeatured image A featured
image is the main image used on your blog archive page and is pulled when the post
or page is shared on social media. The image can be used to display in widget areas
on your site or in a summary list of posts. ID), and `template` (page template name,
as would be stored in post metaMeta Meta is a term that refers to the inside workings
of a group. For us, this is the team that works on internal WordPress sites like
WordCamp Central and Make WordPress.).

    ```notranslate
    // Overriding/supplementing a predefined item plus a custom definition
    add_theme_support( 'starter-content', array(
    	'posts' => array(
    		'about' => array(
    			// Use a page template with the predefined about page
    			'template' => 'sample-page-template.php',
    		),
    		'custom' => array(
    			'post_type' => 'post',
    			'post_title' => 'Custom Post',
    			'thumbnail' => '{{featured-image-logo}}',
    		),
    	),
    );
    ```

#### Attachments

While attachments are post objects, they have special handling due to the sideloading
of specified media. Media must be loaded from within the theme or plugin directory–
external URLs are currently disallowed for performance reasons. The location of 
the media, either as a full file path or relative to the theme root, is indicated
in the `file` array item, and some other post fields are available, with `post_content`
mapping to description and `post_excerpt` to caption. Imported attachments can further
be used by using their respective array keys as symbols used within double curly
braces, e.g. `{{featured-image-logo}}` as the featured image (`thumbnail`) for a
post. In the example below, an attachment is specified and used as the featured 
image for the about page.

    ```notranslate
    add_theme_support( 'starter-content', array(
    	'attachments' => array(
    		'featured-image-logo' => array(
    			'post_title' => 'Featured Logo',
    			'post_content' => 'Attachment Description',
    			'post_excerpt' => 'Attachment Caption',
    			'file' => 'assets/images/featured-logo.jpg',
    		),
    	),
    	'posts' => array(
    		'about' => array(
    			// Use the above featured image with the predefined about page
    			'thumbnail' => '{{featured-image-logo}}',
    		),
    	),
    );
    ```

#### Nav Menus

Nav menus are also specially treated post objects. There are essentially two types
of nav menu items – custom links, which require a `title` and `url`, and object 
references, which require `type`, `object`, and `object_id`, which can be a `{{post}}`
symbolic reference.

#### Options and Theme Mods

Options and theme mods are more freeform and merely require a match for a name. 
Symbolic references to imported items are particularly useful here, such as for 
the `page_on_front` option and Twenty Seventeen’s multi-section homepage as stored
in theme mods. Themes hosted on .org will likely be limited to theme mods and a 
subset of options; all other developers are encouraged to consider user experience
and expectations first.

### What does this mean for themes?

Core-provided content helps support a consistent preview experience across themes
with high quality localized content, helping users understand how WordPress and 
that theme fit their needs. Theme authors are encouraged to select from core-provided
content, but as is always the case with WordPress, starter content still has some
flexibility, and will continue to mature as a feature over time.

While theme review guidelines need to be finalized and documented, it is anticipated
that themes being submitted to WordPress.orgWordPress.org The community site where
WordPress code is created and shared by the users. This is where you can download
the source code for WordPress core, plugins and themes as well as the central location
for community conversations and organization. [https://wordpress.org/](https://wordpress.org/)
will be expected to select from core-provided content to promote consistency and
to help keep the theme review process from becoming lengthier, with exceptions being
made on a case by case basis. Themes being distributed outside of WordPress.org 
are not subject to the same review process; however, it is recommended that consistent
user experiences be the primary consideration in how starter content is chosen and
implemented.

### What’s next?

Testing this feature with your theme or plugin does not require a fresh install 
every time – you can set the `fresh_site` option to `1` using the tool of your choice,
such as wp-cliWP-CLI WP-CLI is the Command Line Interface for WordPress, used to
do administrative and development tasks in a programmatic way. The project page 
is [http://wp-cli.org/](http://wp-cli.org/) [https://make.wordpress.org/cli/](https://make.wordpress.org/cli/)
or phpMyAdmin. Do note that content merging logic has not been tackled so you may
not quite get the exact same effect as a truly fresh install; however, since all
of the changes are held in a [customizer changeset](https://make.wordpress.org/core/2016/10/12/customize-changesets-technical-design-decisions/)
and are not otherwise live on the site, there is no data loss, unless you save and
publish the starter content overrides of course.

In the future, all sites should be able to live preview new themes in ways that 
really showcase that theme’s capabilitiescapability A **capability** is permission
to perform one or more types of task. Checking if a user has a capability is performed
by the `current_user_can` function. Each user of a WordPress site might have some
permissions but not others, depending on their role. For example, users who have
the Author role usually have permission to edit their own posts (the “edit_posts”
capability), but not permission to edit other users’ posts (the “edit_others_posts”
capability)., whether that’s with no content made yet or with a lot of existing 
content to work into the preview. This will take a lot of consideration around user
expectations for content merging, and should be tackled as its own feature. There
are also potentially interesting extensions such as UI for users to select from 
sets of content or selectively accept/reject staged changes.

And finally, to best align preview experiences in various places, theme previews
on .org should also leverage starter content. Helping hands are needed here – please
pingPing The act of sending a very small amount of data to an end point. Ping is
used in computer science to illicit a response from a target server to test it’s
connection. Ping is also a term used by Slack users to @ someone or send them a 
direct message (DM). Users might say something along the lines of “Ping me when 
the meeting starts.” me ([@helen](https://profiles.wordpress.org/helen/)) in SlackSlack
Slack is a Collaborative Group Chat Platform [https://slack.com/](https://slack.com/).
The WordPress community has its own Slack Channel at [https://make.wordpress.org/chat/](https://make.wordpress.org/chat/)
should you be interested!

[#4-7](https://make.wordpress.org/core/tag/4-7/), [#dev-notes](https://make.wordpress.org/core/tag/dev-notes/)

### Share this:

 * [  Threads ](https://make.wordpress.org/core/2016/11/30/starter-content-for-themes-in-4-7/?share=threads)
 * [  Mastodon ](https://make.wordpress.org/core/2016/11/30/starter-content-for-themes-in-4-7/?share=mastodon)
 * [  Bluesky ](https://make.wordpress.org/core/2016/11/30/starter-content-for-themes-in-4-7/?share=bluesky)
 * [  X ](https://make.wordpress.org/core/2016/11/30/starter-content-for-themes-in-4-7/?share=x)
 * [  Facebook ](https://make.wordpress.org/core/2016/11/30/starter-content-for-themes-in-4-7/?share=facebook)
 * [  LinkedIn ](https://make.wordpress.org/core/2016/11/30/starter-content-for-themes-in-4-7/?share=linkedin)

 1.  ![](https://secure.gravatar.com/avatar/85cd797876de53531b77ed37565fcf9fd5a7bae47d5139120cec9f63d17b706b?
     s=32&d=mm&r=g)
 2.   [Luke Cavanagh](https://profiles.wordpress.org/lukecavanagh/)  8:55 pm _on_ November
     30, 2016
 3.  Thanks for sharing.
 4.  ![](https://secure.gravatar.com/avatar/9ccbd5f80c8e1c691272c1d4652e4da750d3ba4e08bcc2a8f9801f7f3aadf975?
     s=32&d=mm&r=g)
 5.   [Madalin Tache](https://profiles.wordpress.org/niladam/)  9:05 pm _on_ November
     30, 2016
 6.  That’s a really good idea! Looking forward to it!:)
 7.  ![](https://secure.gravatar.com/avatar/809db0a17fba9bbc5e4377329f568e46e1a3d3b5edd0fd9896dab5e7b0fe5a1a?
     s=32&d=mm&r=g)
 8.   [Hardeep Asrani](https://profiles.wordpress.org/hardeepasrani/)  9:08 pm _on_
     November 30, 2016
 9.  That’s gonna be a game changer for themes. 🙂
 10. ![](https://secure.gravatar.com/avatar/d1900f2adcdf1910bcaad713bdba5d308f16efb7919671ed46a69b2d6cad0833?
     s=32&d=mm&r=g)
 11.  [t-p](https://profiles.wordpress.org/t-p/)  11:39 pm _on_ November 30, 2016
 12. To be able to live preview new themes sounds awesome 🙂
 13. ![](https://secure.gravatar.com/avatar/015463b5898653ffbefec90328d251831d77937353ee92bfaec2283815ebc6a3?
     s=32&d=mm&r=g)
 14.  [WPDevHQ](https://profiles.wordpress.org/wpdevhq/)  11:40 pm _on_ November 30,
     2016
 15. Awesome news for themes.
 16. Will this be carried over to WordPress.orgWordPress.org The community site where
     WordPress code is created and shared by the users. This is where you can download
     the source code for WordPress core, plugins and themes as well as the central 
     location for community conversations and organization. [https://wordpress.org/](https://wordpress.org/)
     theme preview or does that not work as a `fresh_site`?
 17. ![](https://secure.gravatar.com/avatar/8845aff3f199163c862fab2df0749653d1becc94902764cbba85dc67bb2e6ae6?
     s=32&d=mm&r=g)
 18.  [Omaar Osmaan](https://profiles.wordpress.org/moonomo/)  11:57 pm _on_ November
     30, 2016
 19. Awesome thank you!
 20. ![](https://secure.gravatar.com/avatar/88baf97a25e73b7261efedeb9442e64d6772e99d0b95c5135ad91178ac9b666a?
     s=32&d=mm&r=g)
 21.  [evisiontheme](https://profiles.wordpress.org/evisiontheme/)  9:21 am _on_ December
     1, 2016
 22. Really, great idea. Thanks for the sharing it. We look forward it soon.
 23. ![](https://secure.gravatar.com/avatar/fcbc6869ca65225c6bfbd46b7f1720efc6bd0b966f1a3ea9401663d9e9870459?
     s=32&d=mm&r=g)
 24.  [NateWr](https://profiles.wordpress.org/natewr/)  9:39 am _on_ December 1, 2016
 25. Looks great! I suppose this has been discussed, but is there any plan to support
     post metaMeta Meta is a term that refers to the inside workings of a group. For
     us, this is the team that works on internal WordPress sites like WordCamp Central
     and Make WordPress. in a more generic fashion? I’m thinking a key for `post_meta`
     which can itself be an assoc array with a key/value map. This could be useful 
     for previewing data from pluginPlugin A plugin is a piece of software containing
     a group of functions that can be added to a WordPress website. They can extend
     functionality or add new features to your WordPress websites. WordPress plugins
     are written in the PHP programming language and integrate seamlessly with WordPress.
     These can be free in the WordPress.org Plugin Directory [https://wordpress.org/plugins/](https://wordpress.org/plugins/)
     or can be cost-based plugin from a third-party. custom post types which rely more
     heavily on post meta.
 26.  * ![](https://secure.gravatar.com/avatar/e05110ddfc422ecfc3c68f61f2b08a404343ef8514fed12b460fc9c9aaa47d27?
        s=32&d=mm&r=g)
      *  [Helen Hou-Sandi](https://profiles.wordpress.org/helen/)  3:16 pm _on_ December
        1, 2016
      * Untested at the moment, but I believe this is already technically possible,
        just requires some more hoop jumping at the moment in the form of having to
        filterFilter Filters are one of the two types of Hooks [https://codex.wordpress.org/Plugin_API/Hooks](https://codex.wordpress.org/Plugin_API/Hooks).
        They provide a way for functions to modify data of other functions. They are
        the counterpart to Actions. Unlike Actions, filters are meant to work in an
        isolated manner, and should never have side effects such as affecting global
        variables and output. it in using `get_theme_starter_content` as opposed to
        being able to specify it during initial registration. That is the case for 
        plugins as it is though, so it’s not really that much of a hoop. So to do that,
        you would want to use a `meta_input` arg with the definition of that post, 
        the same way `post_title` can be specified. Can you let me know if it works?
         - ![](https://secure.gravatar.com/avatar/fcbc6869ca65225c6bfbd46b7f1720efc6bd0b966f1a3ea9401663d9e9870459?
           s=32&d=mm&r=g)
         -  [NateWr](https://profiles.wordpress.org/natewr/)  9:06 pm _on_ December
           6, 2016
         - Hey thanks Helen. I missed this reply in my notifications so just seeing
           it now. I’ll try to give this a go in the next couple weeks and let you 
           know.
 27. ![](https://secure.gravatar.com/avatar/4c89dc1bb610b8fe3109a8f396f71c651bb779f7b0f7c3f2bc6d6f2cc3b41fb9?
     s=32&d=mm&r=g)
 28.  [Mahesh Waghmare](https://profiles.wordpress.org/mahesh901122/)  9:51 am _on_
     December 1, 2016
 29. +1, Its nice enhancementenhancement Enhancements are simple improvements to WordPress,
     such as the addition of a hook, a new feature, or an improvement to an existing
     feature. for theme developer.
 30. ![](https://secure.gravatar.com/avatar/0608b540c7da83b396fd9a453ad1ac0298152522bc3a06888d41649e4024a089?
     s=32&d=mm&r=g)
 31.  [Ahmad Awais](https://profiles.wordpress.org/mrahmadawais/)  2:57 pm _on_ December
     1, 2016
 32. Thanks a lot Helen and all the contributors for making this happen. It’s a huge
     deal for me and my clients.
 33. ![](https://secure.gravatar.com/avatar/75f0f2c68e98799c913158b3253a84bffe60cb83335db3095b802c89a8aee056?
     s=32&d=mm&r=g)
 34.  [rheinardkorf](https://profiles.wordpress.org/rheinardkorf/)  11:15 pm _on_ December
     5, 2016
 35. Love it! Handy for developers and those looking for themes. Nothing more annoying
     than previewing a theme with current standard content. Great improvement.
 36. ![](https://secure.gravatar.com/avatar/62cd769e94e68c9ad79cf1be147715db400ce679508d5ae4783dea4a930e9b21?
     s=32&d=mm&r=g)
 37.  [Armando Duran](https://profiles.wordpress.org/armandoduran/)  12:46 am _on_ 
     December 7, 2016
 38. I tried this on an existing install. For a moment I thought that the fresh_site
     option would be there after upgrading to 4.7 but then I realized that after adding
     the option manually on the DB, starter content was there!
 39. love this feature … and the new 4.7 version of course!
 40. ![](https://secure.gravatar.com/avatar/cafef2052ab089d018e8ac73d46676003966bd04f3b72524f891be5a69a45f99?
     s=32&d=mm&r=g)
 41.  [Volkv](https://profiles.wordpress.org/volkv/)  9:50 am _on_ December 7, 2016
 42. But it doesnt work right for me. After fresh 4.7 install I got 20/17 theme loaded
     WITHOUT any starter pre-loaded content – only with default widgets. Starter changes
     appears ONLY after I click on customizerCustomizer Tool built into WordPress core
     that hooks into most modern themes. You can use it to preview and modify many 
     of your site’s appearance settings. button.
 43. Same behavior with my own theme. Is it bugbug A bug is an error or unexpected 
     result. Performance improvements, code optimization, and are considered enhancements,
     not defects. After feature freeze, only bugs are dealt with, with regressions (
     adverse changes from the previous version) being the highest priority. or what
     am I doing wrong?
 44.  * ![](https://secure.gravatar.com/avatar/34c19c0923466a5bf3c232ad7885b9985cd075c79ac0beb4b802c3ee80d71452?
        s=32&d=mm&r=g)
      *  [WebMan Design | Oliver Juhas](https://profiles.wordpress.org/webmandesign/)
        9:23 am _on_ December 20, 2016
      * This is actually intentional. Starter content is present in theme customizerCustomizer
        Tool built into WordPress core that hooks into most modern themes. You can 
        use it to preview and modify many of your site’s appearance settings. only 
        to preview how the theme looks/works with a content in place. Once you save
        the customizer settings the starter content should by ported into your website
        and you should actually see it in your pages/posts, widgets,…
 45. ![](https://secure.gravatar.com/avatar/6ff832cb81b8a8cf45445e5913947c484954870b1932bc79b297470f80252c0d?
     s=32&d=mm&r=g)
 46.  [Mal](https://profiles.wordpress.org/looimaster/)  11:06 am _on_ December 7, 
     2016
 47. It doesn’t work for me.
 48. I just installed WordPress 4.7 and put this in the functions.php file:
 49.     ```
         function my_setup() {
         	add_theme_support( 'starter-content', array(
         		'options' => array(
         			'test123' => 'test',
         		),
         	) );
         }
         add_action( 'after_setup_theme', 'my_setup' );
         ```
     
 50. The `frest_site` option was added to the database automatically with value of `
     1`.
 51. In footer.php when I run `var_dump(get_theme_starter_content());` I get the correct
     result but when I run `var_dump(get_option('test123'));` right next to it I’m 
     only getting `false`.
 52. I tried to debug that but I can’t figure out what this is supposed to do `preg_match('/
     ^{{(?P.+)}}$/', $value, $matches )` in `import_theme_starter_content()`?
 53. I also noticed that all arrays need to be serialized which was kind of unexpected:
 54.     ```
         add_theme_support( 'starter-content', array(
         	'options' => array(
         		'test123' => 'test',
         		'test1234' => maybe_serialize( array(
         			'something' => 'test',
         		) ),
         	),
         ) );
         ```
     
 55. ![](https://secure.gravatar.com/avatar/34c19c0923466a5bf3c232ad7885b9985cd075c79ac0beb4b802c3ee80d71452?
     s=32&d=mm&r=g)
 56.  [WebMan Design | Oliver Juhas](https://profiles.wordpress.org/webmandesign/)  
     11:14 am _on_ December 18, 2016
 57. Hi,
 58. This is a great feature, thank you! I have successfully tested it with standard
     one-site WordPress installation. But for some reason it does not work for me on
     WordPress multisitemultisite Used to describe a WordPress installation with a 
     network of multiple blogs, grouped by sites. This installation type has shared
     users tables, and creates separate database tables for each blog (wp_posts becomes
     wp_0_posts). See also **network**, **blog**, **site**. So, my question is:
 59. Does themes starter content work with WordPress networknetwork (versus site, blog)(
     a multisite) installation?
 60. Thanks for the answer in advance!
 61.  * ![](https://secure.gravatar.com/avatar/34c19c0923466a5bf3c232ad7885b9985cd075c79ac0beb4b802c3ee80d71452?
        s=32&d=mm&r=g)
      *  [WebMan Design | Oliver Juhas](https://profiles.wordpress.org/webmandesign/)
        8:02 am _on_ December 20, 2016
      * Actually, there is a ticketticket Created for both bug reports and feature 
        development on the bug tracker. open that should resolve the issue: [https://core.trac.wordpress.org/ticket/38624#comment:4](https://core.trac.wordpress.org/ticket/38624#comment:4)
 62. ![](https://secure.gravatar.com/avatar/daf605b7e5d01b957a61bf4e5a2dd82e387583db4c2b1db4b9a6b80d37e11242?
     s=32&d=mm&r=g)
 63.  [Thad Allender](https://profiles.wordpress.org/endortrails/)  11:17 pm _on_ February
     7, 2017
 64. Great feature! There appears to be some oddities with custom post types, all of
     which are registered via plugins on the init hook. It appears that starter content
     needs to be registered on after_theme_setup, which fires before the init hook.
     Thus, starter content for custom post types doesn’t work. For what it’s worth,
     I’m on a Networknetwork (versus site, blog) install, with fresh_site set to 1,
     and plugins loaded as mu-plugins. All starter content works fine, except for the
     custom post_type.
 65. Maybe I’m overlooking something obvious?
 66. [Here’s my full child theme functions.php](https://gist.github.com/thadallender/d40271f49c410745177f0760838b0dd9).
 67.  * ![](https://secure.gravatar.com/avatar/0352cd451932c8a2ab15b8457933e6d90cc919bbf23db63e3bc35ee41d56577e?
        s=32&d=mm&r=g)
      *  [tiagonoronha](https://profiles.wordpress.org/tiagonoronha/)  11:34 pm _on_
        February 7, 2017
      * [https://core.trac.wordpress.org/ticket/39610](https://core.trac.wordpress.org/ticket/39610)

Comments are closed.

# Post navigation

[← Week in Core, November 23 – 29, 2016](https://make.wordpress.org/core/2016/11/30/week-in-core-november-23-29-2016/)

[Customizer Improvements in 4.7 →](https://make.wordpress.org/core/2016/11/30/customizer-improvements-in-4-7/)