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 muss keine Datei importiert werden, weil die Starter-Inhalte direkt in das Theme integriert sind. Damit fällt ein – für einige potenziell schwieriger – Schritt weg.
- Die Anzeige der Starter-Inhalte geschieht im Customizer, wo vor der Übernahme noch Dinge angepasst werden können.
Es gibt allerdings (zurzeit) auch Nachteile:
- Aktuell funktionieren Starter-Inhalte nur bei frischen Installationen – für Installationen, die diesen Stand verlassen haben, müsste ein Wert in der Datenbank angepasst werden.
- Momentan gibt es ein Problem mit der Anzeige von Beiträgen, wodurch sich die Starter-Content-Funktion aktuell nur bedingt für Blog-Themes eignet.
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:
- Erstellen eines Attachment-Objekts
featured-image-about-pagemit einem Titel und einer Verknüpfung zu einer Bilddatei aus unserem Theme. - Erstellen von drei Post-Objekten. Für
homeverändern wir lediglich den Seiteninhalt. Die Seiteaboutbekommt außerdem über die Angabe des Slugs der Template-Datei alstemplateein anderes Seiten-Template zugewiesen und das überattachmentangelegte Bildobjekt als Beitragsbild. Um auf das Bild zu verweisen, müssen wir als Wert fürpost_thumbnailden Schlüssel des Bild-Arrays nutzen und innerhalb von zwei geschweiften Klammern angeben.blogwird zur Anzeige der letzten Beiträge genutzt und braucht daher keinen Inhalt. - Festlegen einiger Site-Optionen über
options. Wir möchten eine statische Startseite und setzen deshalb fürshow_on_frontden Wertpage. Als Startseite soll diehome-Seite zum Einsatz kommen, weshalb wir sie – wieder in geschweiften Klammern als Referenz – fürpage_on_fronteintragen. Zur Anzeige der letzten Beiträge möchten wir dieblog-Seite und setzen sie deshalb als Wert fürpage_for_posts. Darüber hinaus setzen wir ein Header-Bild und nehmen hier der Einfachheit halber dasselbe wie für die About-Seite. Diesmal muss allerdings der Pfad zu dem Bild angegeben werden. - Erstellen eines Menüs für die Menü-Position
primarymit den Links zur Startseite,aboutundblog. Für die Seiten, die WordPress standardmäßig mitbringt, reicht hier ein Verweis überpage_blogoderpage_about–link_homeführt immer zur Startseite. Um selbst erstellte Seiten zu verlinken, könnt ihr einen Eintrag nach dem folgenden Format unteritemsvornehmen (entnommen aus derget_theme_starter_content()-Funktion):
'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.
Dieser Article wurde erwähnt auf wpletter.de