Standardinhalte für ein Theme definieren

Gestern hatte ich euch gezeigt, wie man über den Customizer sehr schnell neue Seiten direkt aus dem Menü heraus erstellen kann. Das hilft ungemein beim Aufsetzen einer neuen Seite, da man nicht ständig zwischen verschiedenen Ansichten hin und her wechseln muss. Noch schneller geht es mit einem weitern neuen Feature von WordPress 4.7, dem “Starter Content” für Themes.

Inhalt direkt im Theme definieren

Aus eigener Erfahrung oder von Kundenprojekten kennt man bestimmt das Problem, dass ein Theme auf einer Demo-Seite super toll aussieht, man aber lange braucht, um diesen Stand nachzubauen. Wenn man Glück hat, liegt dem Theme eine XML-Datei mit dem Demoinhalt bei. Manche (aufgeblähten) Themes haben sogar eine extra Import-Funktion für Demo-Inhalte, da nämlich Theme Einstellungen, Menüs, Widgets und ähnliches nicht in einer normalen XML-Datei aus dem WordPress Exporter stecken.

Das alles ist nun nicht mehr notwendig (oder zumindest sehr vieles davon). Denn als Theme-Entwickler könnt ihr den Standardinhalt gleich zusammen mit eurem Theme mitliefern. Und hierbei könnt ihr nicht nur Beiträge und Seiten definieren, sondern auch Widgets, Menüs und sogar Medien.

Beiträge und Seiten definieren

Fangen mir mal mit den wichtigsten Elementen an. Jeder Website braucht erst einmal ein paar Seiten. Nehmen wir einfach mal die Obligatorischen Seiten “Home”, “Blog”, “Kontakt” und “Impressum”. Hinzugefügt wird der Starter Content über die add_theme_support() Funktion:

add_theme_support( 'starter-content', array(
	// ...
	'posts' => array(
		'home',
		'blog',
		'contact' => array(
			'post_title' => 'Kontakt',
		),
		'imprint' => array(
			'post_type' => 'page',
			'post_title' => 'Impressum',
			'post_content' => '<h2>Angaben gemäß §5 TMG:</h2> ...'
		),
	),
	// ...
) );

Die Seiten Home und Blog haben erst einmal keine Eigenschaften und werden einfach nur leer angelegt. Die Blog Seite verwenden wir später für die Auflistung der Beiträge. Bei den anderen beiden Seiten können wir gleich Titel und Inhalte definieren. Bei den ersten drei Seiten handelt es sich um Inhalte, die im Core definiert sind. Hier brauchen wir also keinen post_type anzugeben. Beim Impressum ist dies aber notwendig.

Ein Menü befüllen

Einfach nur leere Seiten zu erstellen wäre jetzt noch nicht die ganz große Arbeitserleichterung. Spannender wird es, wenn wir diese gleich zu einem Menü hinzufügen. Es geht ebenfalls sehr einfach mit einer entsprechenden Struktur:

add_theme_support( 'starter-content', array(
	// ...
	'nav_menus' => array(
		'primary' => array(
			'name' => 'Hauptmenü',
			'items' => array(
				'page_home',
				'page_blog',
				'page_contact',
				'page_imprint' => array(
					'type' => 'post_type',
					'object' => 'page',
					'object_id' => '{{imprint}}',
				),
			),
		),
	),
	// ...
) );

Auch bei der Navigation können wir wieder auf einige Inhalte aus dem Core zurückgreifen. Unsere selbst definierte Seite Impressum müssen wir allerdings referenzieren. Hierzu verwenden wird als object_id den Key aus dem assoziativen Array in zwei geschweiften Klammern.

Optionen festlegen

Zuletzt schauen wir uns mal noch die Seitenoptionen an. Unsere Website mit den Seiten Home und Blog legt ja nahe, dass wir Home als eine statische Startseite verwenden möchten und die Seite Blog für die Auflistung der letzten Beiträge. Das könnten wir nun manuell festlegen oder auch hierzu wieder das Starter Content Feature verwenden:

add_theme_support( 'starter-content', array(
	// ...
	'options' => array(
		'show_on_front' => 'page',
		'page_on_front' => '{{home}}',
		'page_for_posts' => '{{blog}}',
	),
	// ...
) );

Standardinhalte übernehmen

Nachdem ihr das alles in eurem Theme programmiert habt und es dann aktiviert, werdet ihr euch vielleicht wundern, wieso ihr nichts seht. Wo sind denn diese Inhalte geblieben? Die Antwort ist mal wieder der Customizer. Wenn ihr den öffnet, dann findet ihr dort das neu definierte Menü:

Sobald ihr nun auf “Speichern & Publizieren” klickt, werden die Seiten angelegt, das Menü gefüllt, die Startseite und die Blogseite gesetzt, sowie alle anderen Standardinhalte aus dem Core geladen, die ihr nicht überschrieben habt.

Fazit

Dieses neue Feature mag zwar auf den ersten Blick etwas umständlich erscheinen, aber gerade dann, wenn man immer wieder sehr ähnliche Seiten aufsetzt, kann es sich durchaus lohnen ein Child Theme mit solchen Standardinhalten zu definieren.

Ich habe den Artikel und den Code absichtlich sehr übersichtliche gehalten, damit ihr erst einmal das Prinzip versteht. Weitere Informationen findet ihr im Make-Blogartikel dazu. Eine Sache, die ich im Code wohl noch ändern würde, wäre der Einsatz von Übersetzungsfunktionen. So könntet ihr nämlich gleich für mehrere Seiten Inhalte in der richtigen Sprache laden. Für ein Beispiel einer erweiterten Starter-Content-Definition solltet ihr euch einfach mal die functions.php Datei von TwentySeventeen ansehen.

Habt ihr schon Projekte, bei denen ihr das neue Feature gut gebrauchen könnt? Ich arbeite zurzeit an einem neuen Standard-Theme für WordCamps und dort kann ich mir das sehr gut vorstellen, um direkt beim Start der Website die wichtigsten Inhalte und Menüpunkte zu haben.

Neue Seiten direkt aus dem Menü heraus im Customizer erstellen

Eigentlich hatte ich mit für heute schon ein Thema zurecht gelegt. Aber dann ist mir bewusst geworden, dass ich vielleicht erst einmal noch eine kleine Vorstufe dazu erklären sollte. Wer das Release-Video zu WordPress 4.7 gesehen hat, wird das Feature wohl schon gesehen haben. Aber da ich weiß, dass einige das Video nicht schauen, erzähle ich ja vielleicht manchen von euch auch noch etwas Neues 🙂

Menü mit Seiten füllen bis WordPress 4.6

Wer kennt das nicht? Man erstelle eine frische neue Seite und ist gerade dabei die wichtigsten Seiten wie “News”, “Über uns”, “Kontakt” und ähnliches ins Hauptmenü einzufügen, dann stellt man aber fest, dass eine Seite fehlt. Man speichert das Menü also zwischen, erstellt eine leere Seite, veröffentlicht diese, geht zurück in die Menüverwaltung und wählt diese aus. Nur um dann festzustellen, dass noch eine fehlt 🙁

Weiterlesen →

Eigene Sammel-Aktion mit WordPress 4.7 definieren

Ich wollte eigentlich schon vorgestern einen Beitrag über die Sammel-Aktionen (“Bulk Edit Actions”) schreiben. Aber jede Idee, die ich hatte, war schon im Core umgesetzt. Aber mit meinem Beitrag von gestern ist mir dann doch eine Idee gekommen 🙂

Mehrere Medien einem Schlagwort zuordnen

Gestern habe ich euch ja gezeigt, wie ihr einen einfachen Pressespiegel erstellen könnt. Dabei musstet ihr alle PDF-Dateien einzeln zur Kategorie hinzufügen. Das ist natürlich bei vielen Dateien sehr mühsam. Leider gibt es auch keine “Massenbearbeitung” wie bei Beiträgen. Das Einzige, was ihr mit mehreren Dateien machen könnt, ist diese unwiderruflich zu löschen:

Weiterlesen →

Pressespiegel aus PDF-Dateien erstellen

Gestern hatte ich euch ja angekündigt, dass ich etwas mit den neuen PDF-Vorschaubildern basteln möchte. Ich habe mir als Beispiel einen kleinen Pressespiegel überlegt, der alle PDF-Dateien mit einem Schlagwort “Pressespiegel” als Archiv anzeigt.

PDF-Dateien verschlagworten

Vermutlich hätte ich den Artikel besser übermorgen gepostet, denn im 20. Adventskalenderartikel letztes Jahr habe ich euch erzählt, wie man Anhänge verschlagworten kann 😉 Im Grunde war es super einfach. Alles, was ihr dazu braucht, ist ein einzelner Funktionsaufruf:

Weiterlesen →

PDF Vorschaubilder von WordPress 4.7 in XAMPP unter Windows verwenden

Mit WordPress 4.7 wurde eine neue sehr nützliche Funktion eingeführt: PDF-Vorschaubilder. Ich wollte heute eigentlich einen Beitrag zu dem Thema schreiben und habe es einfach mal testen wollen. Leider funktioniert es nicht “out of the box” unter Windows. Für kleine Demos setze ich gerne XAMPP ein und hiermit hatte ich leider keinen Erfolg mit den Vorschaubildern. Also habe ich meinen geplanten Artikel verschieben müssen, um euch erst einmal zu zeigen, wie ihr es unter Windows zum Laufen bekommt.

Notwendige Abhängigkeiten installieren

Wie im Make-Blogartikel bereits beschrieben wird, benötigt die neue Funktion drei Komponenten Imagick, ImageMagick und Ghostscript. Alle drei sind unter Windows nicht installiert. Daher hier kurz zu jedem eine Installationsanleitung.

Weiterlesen →