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

6.1 KiB

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:

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: Publishedpublish (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-DDYYYY-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)