Post Meta (Engine Helper)¶
Überblick¶
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 Helfer Funktionen).
Siehe auch¶
- Felder (Engine) – Aufbau der Felddefinitionen und Feldtypen.
- Inhaltstypen – Post-Typen und Meta-Boxen anlegen.
- Helfer Funktionen – Übersicht inkl.
twtheme_get_value,twtheme_get_title.