MD2WordPress/CHANGELOG.md
Jörg Lohrer 85f58e2528 Feature: Map authors as tags in Vorname_Nachname format
- Added format_author_as_tag() function to convert author names to tag format
- Author names automatically added to tags with spaces replaced by underscores
- Example: 'Jörg Lohrer' → 'Jörg_Lohrer' tag
- Enables author filtering via WordPress tag taxonomy
- Updated documentation to reflect new author handling approach
- Version bump to 0.3.0
2025-11-05 05:32:20 +01:00

191 lines
6.1 KiB
Markdown

# Changelog
## Version 0.3.0 (2025-10-01)
### Feature - Autor-zu-Tag-Mapping 🏷️
**Neues Feature:** Autoren werden automatisch als Tags hinzugefügt!
**Funktion:**
- Autor aus Frontmatter wird extrahiert (`author`, `#staticSiteGenerator.author`, `#commonMetadata.creator`)
- Autor-Name wird automatisch als Tag im Format `Vorname_Nachname` hinzugefügt
- Leerzeichen werden durch Unterstriche ersetzt
- Mehrfache Unterstriche werden konsolidiert
**Beispiel:**
```yaml
author: Jörg Lohrer
tags:
- OER
- Community
```
**Ergebnis:**
- Tags in WordPress: `OER`, `Community`, `Jörg_Lohrer`
- Filterung nach Autoren über WordPress-Tag-Taxonomie möglich
**Technische Details:**
- Neue Funktion `format_author_as_tag()` in `markdown_parser.py`
- Autor-Tag wird nur hinzugefügt, wenn Autor vorhanden und noch nicht in Tags
- Integration in `extract_wordpress_metadata()` nach Autor-Extraktion
---
## Version 0.2.2 (2025-10-01)
### Bugfix - Kritisch! 🐛
#### Tags/Kategorien werden jetzt korrekt zugewiesen
**Problem:** Tags und Kategorien wurden als existierend erkannt, aber NICHT dem Beitrag zugewiesen.
**Ursache:**
- WordPress-API gibt bei `term_exists`-Fehler die `term_id` in den Fehler-Daten zurück
- Diese `term_id` wurde nicht genutzt, es wurde nur erneut gesucht (was nichts fand)
- Ohne Tag-IDs konnte WordPress die Tags nicht zuweisen
**Lösung:**
- Extrahiere `term_id` direkt aus `error_data['data']['term_id']`
- Bei `term_exists`-Code: Nutze die zurückgegebene `term_id` sofort
- Fallback: Suche erneut falls Extraktion fehlschlägt
- Gezielte Suche mit `search`-Parameter für bessere Performance
**Vorher:**
```
Fehler beim Erstellen des Tags 'OER': 400 Client Error...
Details: {'code': 'term_exists', 'data': {'term_id': 3866}}
# Tag-ID 3866 wurde NICHT genutzt → Tag nicht zugewiesen
```
**Nachher:**
```
→ Tag 'OER' existiert bereits (ID: 3866)
→ Tag 'OEP' gefunden (ID: 3867)
Gesamt Tag-IDs: [3866, 3867, ...]
# Tag-IDs werden dem Beitrag zugewiesen ✅
```
### Verbesserungen
- `get_tags()` und `get_categories()` mit optionalem `search`-Parameter
- Reduziert API-Calls durch gezielte Suche statt alle Tags/Kategorien zu laden
- Debug-Ausgaben zeigen jetzt auch gefundene (nicht nur neue) Tags/Kategorien
## Version 0.2.1 (2025-10-01)
### Bugfixes
#### Frontmatter-Parsing für Hash-Kommentar-Stil
**Problem:** Frontmatter mit `#commonMetadata:` (als YAML-Kommentar) wurde nicht korrekt geparst.
**Lösung:**
- Unterstützung für flaches Frontmatter (wenn `#commonMetadata:` als Kommentar behandelt wird)
- `creativeWorkStatus` und `datePublished` werden jetzt auch direkt (nicht verschachtelt) erkannt
- Status-Konvertierung: `Published``publish` (case-insensitive mit "publish" in)
#### Veröffentlichungsdatum für alle Status
**Problem:** Datum wurde bei draft-Posts nicht gesetzt.
**Lösung:**
- `date_gmt` zusätzlich zu `date` setzen für explizite Kontrolle
- Hinweis bei draft-Posts, dass Datum erst beim Veröffentlichen aktiv wird
### Verbesserungen
#### Debug-Ausgaben
- **Tag-Verarbeitung:** Zeigt gefundene Tags aus Frontmatter und zugewiesene IDs
- **Post-Erstellung:** Zeigt alle gesendeten Daten (Tags, Kategorien, Datum)
- **WordPress-Response:** Zeigt zurückgegebene Daten von WordPress
- **Erfolgsmeldung:** ✅ für bessere Sichtbarkeit
#### Beispiel-Ausgabe:
```
Tags aus Frontmatter: ['Tag1', 'Tag2']
→ Tag 'Tag1' ID: 123
→ Tag 'Tag2' ID: 124
Gesamt Tag-IDs: [123, 124]
Veröffentlichungsdatum: 2025-09-02T00:00:00
Erstelle Beitrag mit Daten:
- Status: publish
- Tags: [123, 124]
- Datum: 2025-09-02T00:00:00
- Datum GMT: 2025-09-02T00:00:00
✅ Beitrag 'Titel' erstellt (ID: 456, Status: publish)
WordPress-Tags: [123, 124]
WordPress-Datum: 2025-09-02T00:00:00
```
## Version 0.2.0 (2025-10-01)
### Bugfixes
#### 1. Tag-Duplikatsfehler behoben
**Problem:** Beim Erstellen bereits existierender Tags kam es zu `400 Bad Request` Fehlern.
**Lösung:**
- Bessere Fehlerbehandlung in `get_or_create_tag()` und `get_or_create_category()`
- Bei 400-Fehler wird automatisch erneut nach dem Tag/Kategorie gesucht
- Ausführlichere Fehlermeldungen mit Response-Details
#### 2. Post-Duplikatsprüfung verbessert
**Problem:** Beiträge mit gleichem Titel wurden trotz Duplikatsprüfung doppelt angelegt.
**Lösung:**
- `check_post_exists()` sucht jetzt in allen Status (draft, publish, etc.)
- Case-insensitive Vergleich der Titel
- Prüft sowohl `rendered` als auch `raw` Titel
- Erhöhte Suchanzahl von 10 auf 100 Posts
- Debug-Ausgabe bei gefundenen Duplikaten
#### 3. Veröffentlichungsdatum wird gesetzt
**Problem:** Das `datePublished` aus dem Frontmatter wurde nicht an WordPress übergeben.
**Lösung:**
- Datumsextraktion aus verschiedenen Frontmatter-Feldern:
- `date`
- `datePublished`
- `#commonMetadata.datePublished`
- `#staticSiteGenerator.datePublished`
- Automatische Formatierung: `YYYY-MM-DD``YYYY-MM-DDT00:00:00`
- Datum wird als `date`-Feld an WordPress-API übergeben
### Neue Features
- **USAGE_MODES.md**: Übersichtsdokumentation der drei Verwendungsmodi
## Version 0.1.0 (2025-10-01)
### Features
- Automatische Metadaten-Extraktion aus YAML-Frontmatter
- Drei Verwendungsmodi:
1. Einzelne URL
2. YAML-Batch
3. Forgejo-Repository
- WordPress REST-API Integration
- Duplikatsprüfung für Posts und Medien
- Schema.org-Support
- Markdown zu HTML Konvertierung
- Automatische Tag/Kategorie-Erstellung
## Bekannte Probleme
Keine.
## Geplante Features
## Geplante Features
### Hoch-Priorität
- [ ] **Autor-Mapping:** WordPress-User aus Frontmatter-Autor automatisch zuordnen oder manuelles Mapping
- [ ] **Robuste Forgejo-API:** Bessere Fehlerbehandlung, Progress-Tracking für Batch-Imports
### Mittel-Priorität
- [ ] GitHub-Repository Support (zusätzlich zu Forgejo)
- [ ] Batch-Update (bestehende Posts aktualisieren statt nur überspringen)
- [ ] Featured Image aus Markdown-Content extrahieren (erstes Bild falls kein Frontmatter-Image)
### Niedrig-Priorität
- [ ] Custom Post Types Support
- [ ] Zeitzone-Unterstützung für Veröffentlichungsdatum
- [ ] Mehrsprachige Beiträge (WPML/Polylang Support)
- [ ] Dry-Run-Modus (zeigt was passieren würde ohne zu erstellen)