Um den Einstieg in ein Theme und die manchmal vielen Optionen zu erleichtern, können Theme-Entwickler eine XML-Datei mit Demo-Daten bereitstellen, die von den Usern dann importiert werden können.

Neben dieser Möglichkeit gibt es seit WordPress 4.7 die »Starter Content«-Funktion, die gegenüber der XML-Variante ein paar Vorteile bietet:

Es gibt allerdings (zurzeit) auch Nachteile:

Trotz dieser Nachteile ist dieses Feature eine spannende Neuerung aus 4.7, die definitiv einen Blick wert ist – schauen wir uns also ein Beispiel an.

Starter-Content-Funktion nutzen

Die Inhalte werden über einen add_theme_support()-Aufruf in das Theme eingefügt – am besten einfach in der Funktion, die bereits andere Aufrufe von add_theme_support() beinhaltet.

Der Core bringt bereits ein wenig Starter-Content mit. So gibt es die Seiten home, about, contact, blog, news und homepage-section, die aber einfach überschrieben werden können.

Folgende Felder können für Post-Objekte (Seiten und Beiträge) genutzt werden: post_type, post_title, post_excerpt, post_name (Slug), post_content, menu_order, comment_status, thumbnail (ID) und template.

Beispiel mit Bild, Seiten, Menü und Optionen

Ein kleines Beispiel kann so aussehen:

// Create starter content for new sites.
add_theme_support( 'starter-content', [

	// Add attachments that are used by posts and pages.
	'attachments' =>; [
		'featured-image-about-page' =>; [
			'post_title' =>; 'Featured image for about page',
			'file' =>; 'assets/images/starter-content/featured-image-about-page.jpg',
		],
	],

	// Create and modify posts and pages.
	'posts' =>; [
		'home' =>; [
			'post_content' =>; __( 'Welcome to your site! This is your homepage, which is what most visitors will see when they come to your site for the first time.

				Here you could describe the features of the theme.', 'text-domain' ),
			],
		'about' =>; [
			'template' =>; 'templates/about-page.php',
			'thumbnail' =>; '{{featured-image-about-page}}',
			'post_content' =>; __( 'Just introduce yourself!', 'text-domain' ),
		],
		'blog',
	],

	// Set options.
	'options' =>; [
		'show_on_front' =>; 'page',
		'page_on_front' =>; '{{home}}',
		'page_for_posts' =>; '{{blog}}',
		'header_image' =>; get_theme_file_uri( 'assets/images/starter-content/featured-image-about-page.jpg' ),
	],

	// Fill nav menus.
		'nav_menus' =>; [
			'primary' =>; [
				'name' =>; __( 'Primary Menu', 'text-domain' ),
				'items' =>; [
					'link_home',
					'page_about',
					'page_blog',
				],
			],
		],
] );Code-Sprache: PHP (php)

Wir erreichen mit dem Code folgendes:

'page_about' =>; [
	'type' =>; 'post_type',
	'object' =>; 'page',
	'object_id' =>; '{{about}}',

	/*
	* Setting a title is optional here.
	* Without it, WordPress uses the page’s title.
	*/
	'title' =>; __( 'Link title', 'text-domain' ),
],Code-Sprache: PHP (php)

Um auf eine bestimmte URL zu verlinken, geht ihr wie folgt vor (wieder an Code aus der Funktion angelehnt):

'link_facebook' => [
	'title' => _x( 'Facebook', 'text-domain' ),
	'url' => 'https://www.facebook.com/wordpress',
],Code-Sprache: PHP (php)

Sidebars und Theme-Mods

Wir können mit Starter-Content aber zum Beispiel auch Sidebars bearbeiten und Werte für Customizer-Optionen setzen:

add_theme_support( 'starter-content', [
	// Set widgets for the widget area with ID »sidebar-1«.
	'widgets' => [
		'sidebar-1' => [
			'search',
			'text_about',
		],
	],

	// Set values for theme mods.
	'theme_mods' => [
		// Set »dark« for the »layout_mode« theme mod.
		'layout_mode' => 'dark',
	],
] );Code-Sprache: PHP (php)

WordPress hat für den Starter-Content bereits standardmäßig Widgets definiert, die in den Widget-Bereichen angezeigt werden. Um das zu ändern, muss in widgets selbst eine Liste mit Widgets für den oder die Widget-Bereiche festgelegt werden.

Dazu wird zunächst als Schlüssel die ID des Widget-Bereichs angegeben und als Array die Liste mit Widgets. Hier könnt ihr archives, calendar, categories, meta, recent-comments, recent-posts, search und zwei Text-Widgets text_business_info und text_about angeben. Es ist auch möglich, eigene Widgets zu definieren.

Über theme_mods können Werte für Customizer-Einstellungen gesetzt werden, die als Theme-Mod angelegt sind.

Weitergehende Informationen zum Thema Starter-Content findet ihr in dem Ankündigungsbeitrag auf make.wordpress.org. Alle Standardwerte, mit denen WordPress kommt, könnt ihr in der Funktion get_theme_starter_content() finden – die Funktion ist auf jeden Fall einen Blick wert, um sich einen Überblick über die Möglichkeiten zu verschaffen.