Inhaltstypen¶
Acht Inhaltstypen kommen aus Modulen. Sie erscheinen im Backend-Menü nur, solange das jeweilige Modul aktiv ist. Schaltet man ein Modul ab, bleiben die Einträge in der Datenbank erhalten, sind aber nicht mehr erreichbar.
| Slug | Beschriftung | Modul | Wofür |
|---|---|---|---|
download |
Download | download |
Dateien mit Metadaten, ausgegeben über Block oder Shortcode |
foreignword |
Fremdwörter | foreignwords |
Glossareinträge, die im Text automatisch hervorgehoben werden |
tw_news |
News | news |
Meldungen für Ankündigungsleiste und Countdown |
slider |
Slides | slider |
Slider mit mehreren Folien |
modal |
Modals | modals |
Inhalte, die in einem Overlay nachgeladen werden |
tw_mockup |
TW mockup | mockups |
Gerätevorlagen für den Mockup-Block |
tw_pricing_plan |
Pricing plan | pricing-cards |
Tarife für die Preiskarten |
loops_filter |
Loops & Filter | loops-filter |
gespeicherte Abfragen und Filter zur Wiederverwendung |
Die letzten drei sind Konfigurationsspeicher, keine Inhalte im engeren Sinn. Ein Eintrag unter Loops & Filter erscheint nicht im Frontend — er wird von einem Block oder Shortcode über seine ID eingebunden.
Taxonomien¶
| Slug | Beschriftung | Gehört zu | Modul |
|---|---|---|---|
download-category |
Categories | download |
download |
foreignword-category |
Themen | foreignword |
foreignwords |
foreignword-language |
Sprachen | foreignword |
foreignwords |
Die Sprachen sind rein zur Sortierung im Backend gedacht: Sie haben keine öffentliche Adresse. Themen und Categories dagegen bringen jeweils ein eigenes Archiv mit.
Die übrigen Inhaltstypen haben keine Taxonomien.
Öffentliche Adressen¶
Die meisten Inhaltstypen aus den Modulen sind Konfigurationsspeicher und gar
nicht aufrufbar: Loops & Filter, Mockups und Tarife sind public => false,
Modals sind zwar public, aber nicht publicly_queryable — sie werden über
einen Nachladeaufruf ausgeliefert, nicht über eine eigene Adresse.
Aufrufbar sind drei, und sie unterscheiden sich darin, wie frei die Adresse ist:
| Inhaltstyp | Adresse | Änderbar? |
|---|---|---|
tw_news |
/news/ und /news/<slug>/ |
ja, Feld Archiv-Slug im News-Modul |
download |
/downloads/ und /downloads/<slug>/ |
ja, Feld Archiv-Slug im Download-Modul; das Archiv lässt sich abschalten |
foreignword |
/lexikon/ und /lexikon/<slug>/ |
nein |
Dazu die beiden Term-Archive:
| Taxonomie | Adresse | Änderbar? |
|---|---|---|
foreignword-category |
/lexikon/themen/<begriff>/ |
nein |
download-category |
/themen/<begriff>/ |
nein |
Alle Slugs sind mit with_front => false registriert, stehen also direkt hinter
der Domain und nicht unter einem Beitrags-Präfix.
Die Fremdwörter sind zudem nur öffentlich, wenn das Glossar in den
Modul-Einstellungen freigeschaltet ist. Vorher sind sie public => false und
haben kein Archiv. Ist es aktiv, zeigt /lexikon/ alle Einträge alphabetisch auf
einer Seite — die Abfrage setzt posts_per_page auf -1, es gibt also keine
Blätternavigation.
Drei Slugs stehen fest im Code
lexikon, lexikon/themen und themen sind in foreignwords.php,
foreignwords-taxonomy.php und download-taxonomy.php hartkodiert. Zwei
davon sind unglücklich gewählt: „Lexikon" trifft eine inhaltliche Aussage,
die nicht zu jedem Glossar passt, und themen belegt für die
Download-Kategorien einen sehr allgemeinen Begriff auf der obersten
Adressebene — dort, wo eine Seite ihn womöglich selbst braucht.
Wer eine andere Adresse braucht, ändert die Argumente aus dem Child-Theme
über register_post_type_args beziehungsweise register_taxonomy_args und
schreibt danach die Permalinks neu. Bei einer Seite mit bestehenden Links ist
das kein harmloser Eingriff: Alte Adressen laufen ins Leere, wenn keine
Weiterleitung dazukommt.
Anpassungen an Kern-Inhaltstypen¶
| Inhaltstyp | Änderung |
|---|---|
post |
Beschriftung im Menü zu „Blog“ geändert |
Die Datei dazu ist includes/posttypes/post-posttype.php.
Eigene Felder¶
TWtheme nutzt kein Advanced Custom Fields. Die Felder kommen aus einer eigenen
Engine im Theme. Für jeden Inhaltstyp gibt es einen Filter nach dem Muster
twtheme_{post_type}_fields, über den Reiter und Felder definiert werden.
Wie das im Detail funktioniert, steht unter Inhaltstypen anlegen und Felder.
Felder gibt es außerdem für:
| Wo | Filter oder Klasse |
|---|---|
| Menüpunkte | twtheme_menu_fields |
| Benutzerprofile | AddProfileMetaFields |
| Kommentare | AddCommentMetaFields |
| Begriffe einer Taxonomie | als vierter Parameter bei der Registrierung |
Die Vorlage für eigene Inhaltstypen¶
Im Theme liegt eine vollständige, aber abgeschaltete Vorlage:
includes/posttypes/example-posttype.php. Sie registriert einen Inhaltstyp
example mit Taxonomie example-category, Feldern und einem Feld-Shortcode.
Eingebunden wird sie nicht — in includes/posttypes/posttypes.php steht die Zeile
auskommentiert:
Die Datei ist als Abschrift gedacht, nicht zum Aktivieren. Projektspezifische Inhaltstypen gehören ins Child-Theme, nicht in den Parent — siehe Child-Theme.
Templates für Inhaltstypen¶
Nur die Fremdwörter und die News bringen eigene Block-Templates mit. Alle anderen
Inhaltstypen nutzen single.html und archive.html.
Welche Templates es gibt, steht unter Templates.
Eigene Optionsseiten¶
Vier Inhaltstypen haben eine eigene Einstellungsseite unterhalb ihres Menüeintrags. Sie speichern jeweils in einer eigenen Option, deren Name dem Slug entspricht:
| Inhaltstyp | Options-Key |
|---|---|
download |
download |
tw_news |
tw_news |
foreignword |
foreignword |
loops_filter |
loops_filter |
Alle Options-Keys im Überblick: Optionen.