Übersicht & Shortcodes
Dieses Dokument beschreibt alle verfügbaren Shortcodes, Themen-Definitionen und Beispiel-Links für die Ulm-Kalender-Integration.
1️⃣ Themen-Definitionen (topics.txt)
Die Datei topics.txt enthält die Zuordnung von Themen zu Schlagwörtern. Sie liegt im Ordner /wp-content/uploads/ulm-kalender/.
Bundesfestung Ulm: bundesfestung, bundesfestung ulm, donauschwäbisches zentralmuseum, fort albeck, fort friedrichsau, friedrichsau
Söflingen: söflingen, christuskirche, klosterhof
soeflingen als Variante von „Söflingen“).
2️⃣ Shortcodes – Übersicht
Die folgenden Shortcodes stehen im Plugin zur Verfügung. Sie können auf beliebigen Seiten oder Beiträgen eingesetzt werden.
| Shortcode | Funktion / Beschreibung | Beispiel-Link |
|---|---|---|
Keine Bilder gefunden. Bitte Verzeichnis und JSON prüfen. |
Öffentliche Galerie mit Filter nach Jahr & Thema. | Galerie anzeigen |
Keine Bilder für Opt-in gefunden. |
Interaktive Kalenderauswahl mit Titel, Widmung und Bildwahl. | Produkt Picker öffnen |
|
Zeigt eine Keyword-/Themenstatistik für Bilderdaten an (nur Redaktion). | Themen-/Keyword-Statistik |
[ulm_kalender_optins] |
Listet gespeicherte Opt-ins / Bestellungen (intern, CSV-Export möglich). | Opt-in Übersicht |
|
Gibt technische Informationen für Debugzwecke aus (Pfad, JSON, Anzahl Dateien). | Debug anzeigen |
3️⃣ URL-Parameter (Initiale Filterung)
Die Galerie und der Product Picker unterstützen optionale URL-Parameter, um direkt Themen oder Jahre zu aktivieren.
?topic=Bundesfestung%20Ulm→ Aktiviert das Thema „Bundesfestung Ulm“?topic=S%C3%B6flingen→ Aktiviert das Thema „Söflingen“?year=2024→ Zeigt Bilder aus dem Jahr 2024- Kombination möglich:
?topic=S%C3%B6flingen&year=2020
4️⃣ Dateistruktur (Empfohlene Ordner)
Alle Dateien liegen standardmäßig im WordPress-Upload-Ordner. Diese Struktur erleichtert Wartung und Updates:
| Pfad / Datei | Zweck / Beschreibung |
|---|---|
/wp-content/uploads/ulm-kalender/topics.txt |
Zuweisung: Themenname → Schlagwörter |
/wp-content/uploads/ulm-kalender/exclude.txt (optional) |
Optionale Negativliste (z. B. Ausschluss saisonaler Begriffe) |
/wp-content/uploads/kalenderdaten/best-of-2006-2026/itcp.json |
Metadaten zu Bildern (Titel, Monat, Keywords, Saison) |
/wp-content/uploads/kalenderdaten/best-of-2006-2026/ |
Bilddateien (JPG, PNG, WEBP) |
Metadaten & Aktualisierung (Bilder, IPTC/EXIF & JSON)
Das Plugin kann Bild-Metadaten auf zwei Wegen beziehen:
- Direkt aus den Bilddateien (IPTC/EXIF) – wird bei jedem Seitenaufruf live ausgelesen.
- Aus der
itcp.json– falls vorhanden, hat diese Vorrang vor IPTC/EXIF (überschreibt).
Was passiert bei Änderungen an Bildern?
- Nur Bilddatei aktualisiert (inkl. IPTC): Änderungen sind sofort sichtbar, sofern keine abweichenden Werte in der
itcp.jsonstehen und kein Seiten-/CDN-Cache dazwischen funkt. - Bilddatei aktualisiert, aber JSON ist älter/abweichend: Die JSON-Werte überschreiben weiterhin die IPTC-Werte. In diesem Fall JSON neu erzeugen (siehe unten).
Empfohlene Workflows
Variante A – JSON wird genutzt (stabilere, nachvollziehbare Datenbasis)
Wenn die itcp.json aktiv ist, sollte sie nach Änderungen an Bild/Metadaten neu erstellt werden.
Shortcode zum Neuaufbau:
Nur Admin.
Dadurch werden aktuelle IPTC/EXIF-Werte in die JSON übernommen.
Variante B – JSON bewusst umgehen (immer Live-IPTC)
Wenn ausschließlich IPTC/EXIF verwendet werden soll, einfach das json="…/itcp.json"-Attribut in den Shortcodes weglassen. Dann liest das Plugin die Metadaten immer direkt aus den Bilddateien.
Cache-Hinweise
- Nach Datei-/JSON-Updates ggf. Divi-/Seiten-Cache und Server-/CDN-Cache leeren.
- Bei Bedarf Browser-Cache umgehen (Hard Reload) oder eine minimale URL-Änderung (Cache-Busting) verwenden.
Optional: „Stale JSON“ automatisch ignorieren
(Optionaler Patch für Fortgeschrittene) – Das Plugin kann so erweitert werden, dass pro Bild geprüft wird: Ist die Bilddatei neuer als der zugehörige JSON-Eintrag? Falls ja, werden die IPTC/EXIF-Werte bevorzugt (verhindert, dass veraltete JSON-Werte aktuelle IPTC-Daten überschreiben).
Einsatzempfehlung: nur wenn häufig Bilder/Metadaten angepasst werden und die JSON nicht immer sofort neu aufgebaut werden kann.
Optionaler Patch (Code-Beispiel)
// Idee in Pseudocode (innerhalb dataset()):
// 1) Zeitstempel der Bilddatei und der JSON-Datei holen
$imgMTime = @filemtime($imagePath);
$jsonMTime = @filemtime($jsonPath);
// 2) Wenn Bilddatei frischer ist als JSON-Eintrag, nutze IPTC/EXIF statt JSON-Werte
if ($imgMTime && $jsonMTime && $imgMTime > $jsonMTime) {
$title = $iptc['title'] ?? $title_from_json;
$caption = $iptc['caption'] ?? $caption_from_json;
$keywords= $iptc['keywords']?? $keywords_from_json;
// usw.
}
Kurz-Checkliste bei „Änderungen werden nicht angezeigt“
- Nutze ich gerade JSON oder nur IPTC?
- Wenn JSON aktiv ist: Neuaufbau mit
Nur Admin.. - Wenn nur IPTC: Shortcode ohne
json="…"nutzen.
- Wenn JSON aktiv ist: Neuaufbau mit
- Cache geleert? (Divi, Server/Plugin, CDN, Browser)
- Pfad korrekt? (Ordner & JSON-Datei stimmen exakt)
- JSON gültig? (keine leere/defekte Datei)