Post Meta¶
Diese Seite ist noch im Aufbau
Der Bestand ist übernommen und die Angaben sind gegen den Code geprüft. Beispiele und Erläuterungen werden noch ergänzt.
Wozu¶
Die Klasse TwthemeGetPostMeta (Engine Helper) lädt die gespeicherten Post-Meta-Daten eines Beitrags oder einer Seite und vereinheitlicht sie mit den Felddefinitionen des jeweiligen Post-Typs. So erhältst du im Template ein Array, in dem zu jedem Feld nicht nur der Wert, sondern auch Label, Typ, Gruppe und weitere Metadaten verfügbar sind – inklusive Repeater-Felder.
- Klasse:
TwthemeGetPostMeta - Typischer Ort:
includes/engine/GetData.php(oder vergleichbar im Theme)
Voraussetzungen¶
- Der Post-Typ muss über eine Felddefinition verfügen:
twtheme_{post_type}_fields()(siehe Felder). - Die Funktion
twtheme_get_current_post_type()wird genutzt, wenn kein Post-Typ übergeben wird.
Grundlegende Anwendung¶
// Im Kontext der aktuellen Schleife: aktueller Post, aktueller Post-Typ
$meta = new TwthemeGetPostMeta();
$data = $meta->get_post_meta();
// Mit expliziter Post-ID
$meta = new TwthemeGetPostMeta(12345);
$data = $meta->get_post_meta();
// Mit expliziter Post-ID und Post-Typ (z. B. für Custom Post Types)
$meta = new TwthemeGetPostMeta(12345, 'product');
$data = $meta->get_post_meta();
Konstruktor¶
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
$post_id |
string\|int |
get_the_ID() |
Post-ID. Leer = aktueller Post in der Loop. |
$post_type |
string\|null |
twtheme_get_current_post_type() |
Post-Typ für die Felddefinition. |
Öffentliche Methoden¶
get_post_meta()¶
Liefert das vollständige, zusammengeführte Meta-Array. Struktur:
- Erste Ebene: Tab-/Gruppen-ID (entspricht dem Meta-Key der Engine).
- Zweite Ebene: Feldname bzw. bei Repeatern der Eintrags-Index.
- Jedes Feld enthält:
label,placeholder,group,group-child,id,type,title,value.
$meta = new TwthemeGetPostMeta();
$data = $meta->get_post_meta();
// Beispiel: Wert eines einfachen Feldes
$headline = $data['content_tab']['headline']['value'] ?? '';
// Mit twtheme_get_value() (Fallback auf placeholder)
$headline = twtheme_get_value($data['content_tab']['headline']);
get_section($section_name)¶
Liefert nur eine Sektion (einen Tab) anhand der Tab-/Gruppen-ID. Nützlich, wenn du nur die Felder eines bestimmten Meta-Keys brauchst.
| Parameter | Typ | Beschreibung |
|---|---|---|
$section_name |
string |
ID der Sektion (z. B. content_tab, sidebar_tab). |
Rückgabe: Array der Sektion oder false, wenn die Sektion nicht existiert.
$meta = new TwthemeGetPostMeta();
$content = $meta->get_section('content_tab');
if ($content !== false) {
$headline = twtheme_get_value($content['headline'] ?? []);
}
get_group($group_name, $only_with_value = false)¶
Filtert die gesamten Meta-Daten nach einer Gruppe (Feldoption group). So kannst du z. B. alle Felder mit group => 'contact' oder group => 'social' gebündelt auslesen.
| Parameter | Typ | Beschreibung |
|---|---|---|
$group_name |
string |
Name der Gruppe (Wert aus der Felddefinition). |
$only_with_value |
bool |
Optional. true = nur Einträge mit (nicht leerem) Wert. Standard: false. |
Rückgabe: Array mit allen Feldern, die zur Gruppe gehören. Struktur berücksichtigt Repeater und group-child (Untergruppen).
$meta = new TwthemeGetPostMeta();
$contact = $meta->get_group('contact');
$contact_filled = $meta->get_group('contact', true);
Datenstruktur pro Feld¶
Jedes Feld im zurückgegebenen Array enthält (sofern von der Felddefinition gesetzt):
| Key | Beschreibung |
|---|---|
value |
Gespeicherter Wert (das, was du meist ausgeben willst). |
label |
Label aus der Felddefinition. |
placeholder |
Platzhaltertext. |
group |
Gruppenzuordnung. |
group-child |
Untergruppe (wird in get_group() für die Struktur genutzt). |
id |
Feld-ID. |
type |
Feldtyp (z. B. text, textarea, repeater). |
title |
Titel/Tooltip. |
Werte ausgeben: Nutze dafür die Helfer twtheme_get_value($data) und ggf. twtheme_get_title($data), um einheitlich Wert bzw. Titel mit Fallback auf Platzhalter/Label zu erhalten.
Repeater-Felder¶
Bei Feldern vom Typ Repeater hat die zweite Ebene pro Eintrag einen numerischen Index (0, 1, 2, …). Darunter liegen die einzelnen Repeater-Felder wieder mit label, value, type usw.
$meta = new TwthemeGetPostMeta();
$data = $meta->get_post_meta();
$repeater = $data['content_tab']['facts'] ?? [];
foreach ($repeater as $index => $entry) {
foreach ($entry as $field_name => $field_data) {
if ($field_data['type'] === 'headline') continue;
echo '<div>' . esc_html(twtheme_get_value($field_data)) . '</div>';
}
}
Typische Einsatzfälle¶
- Single-/Page-Template: Alle Meta-Felder des aktuellen Posts laden und in Variablen oder Partials nutzen.
- Nur eine Meta-Box:
get_section('tab_id')verwenden und nur diese Felder verarbeiten. - Gruppierte Ausgabe (z. B. Kontakt, Social):
get_group('contact')bzw.get_group('contact', true)für nur ausgefüllte Felder. - Repeater ausgeben: Über
get_post_meta()in die Repeater-Struktur gehen und mittwtheme_get_value()die Werte ausgeben.
Abhängigkeiten¶
twtheme_{post_type}_fields()– liefert die Felddefinitionen (Tabs + Felder).twtheme_get_current_post_type()– Ermittlung des Post-Typs.twtheme_get_value($data)– sichere Wertausgabe mit Fallback (siehe Template-Funktionen).
Weiter¶
- Felder – Aufbau der Felddefinitionen und Feldtypen.
- Inhaltstypen anlegen – Inhaltstypen und Meta-Boxen anlegen.
- Template-Funktionen – unter anderem
twtheme_get_value()undtwtheme_get_title(). - Eigene Felder ausgeben – dasselbe ohne PHP, über die Meta-Blöcke.