diff --git a/markdown_parser.py b/markdown_parser.py index a28c2e0..03df5a1 100644 --- a/markdown_parser.py +++ b/markdown_parser.py @@ -137,21 +137,31 @@ def extract_wordpress_metadata(frontmatter: Dict[str, Any], # Status extrahieren (falls vorhanden) if 'status' in frontmatter: metadata['status'] = frontmatter['status'] + elif 'creativeWorkStatus' in frontmatter: + # Direkt im Frontmatter (wenn #commonMetadata: als Kommentar) + work_status = frontmatter.get('creativeWorkStatus', '').lower() + if 'publish' in work_status: + metadata['status'] = 'publish' + elif work_status == 'draft': + metadata['status'] = 'draft' elif isinstance(frontmatter.get('#commonMetadata'), dict): + # Verschachtelt in #commonMetadata common = frontmatter['#commonMetadata'] work_status = common.get('creativeWorkStatus', '').lower() - if work_status == 'published': + if 'publish' in work_status: metadata['status'] = 'publish' elif work_status == 'draft': metadata['status'] = 'draft' # Datum extrahieren (falls vorhanden) - # Priorität: date > datePublished > (aus commonMetadata) > (aus staticSiteGenerator) + # Priorität: date > datePublished > (direkt) > (aus commonMetadata) > (aus staticSiteGenerator) if 'date' in frontmatter: metadata['date'] = str(frontmatter['date']) elif 'datePublished' in frontmatter: + # Direkt im Frontmatter (wenn #commonMetadata: als Kommentar oder als Feld) metadata['date'] = str(frontmatter['datePublished']) elif isinstance(frontmatter.get('#commonMetadata'), dict): + # Verschachtelt in #commonMetadata common = frontmatter['#commonMetadata'] if 'datePublished' in common: metadata['date'] = str(common['datePublished']) diff --git a/wordpress_api.py b/wordpress_api.py index ca31dc1..ba3f63e 100644 --- a/wordpress_api.py +++ b/wordpress_api.py @@ -224,12 +224,31 @@ class WordPressAPI: if tags: post_data['tags'] = tags + # Debug: Zeige was gesendet wird + print(f"Erstelle Beitrag mit Daten:") + print(f" - Status: {status}") + if tags: + print(f" - Tags: {tags}") + if categories: + print(f" - Kategorien: {categories}") + if 'date' in post_data: + print(f" - Datum: {post_data['date']}") + if 'date_gmt' in post_data: + print(f" - Datum GMT: {post_data['date_gmt']}") + # Beitrag erstellen try: response = self._post('posts', data=post_data) post = response.json() post_id = post['id'] - print(f"Beitrag '{title}' erstellt (ID: {post_id}, Status: {status})") + print(f"✅ Beitrag '{title}' erstellt (ID: {post_id}, Status: {status})") + + # Debug: Zeige was WordPress zurückgibt + if 'tags' in post and post['tags']: + print(f" WordPress-Tags: {post['tags']}") + if 'date' in post: + print(f" WordPress-Datum: {post['date']}") + return post_id except requests.exceptions.RequestException as e: diff --git a/workflow.py b/workflow.py index 4377eb6..76b8a17 100644 --- a/workflow.py +++ b/workflow.py @@ -202,10 +202,17 @@ def process_post(wp_api: WordPressAPI, post_config: Dict[str, Any], tag_ids = [] tags_list = metadata.get('tags') or post_config.get('tags') or [] + if tags_list: + print(f"Tags aus Frontmatter: {tags_list}") + for tag_name in tags_list: tag_id = wp_api.get_or_create_tag(tag_name) if tag_id: tag_ids.append(tag_id) + print(f" → Tag '{tag_name}' ID: {tag_id}") + + if tag_ids: + print(f"Gesamt Tag-IDs: {tag_ids}") # Beitragsbild verarbeiten featured_media_id = None @@ -244,8 +251,16 @@ def process_post(wp_api: WordPressAPI, post_config: Dict[str, Any], # Wenn nur Datum (YYYY-MM-DD), füge Uhrzeit hinzu if len(publish_date) == 10: # Format: 2025-09-02 publish_date = f"{publish_date}T00:00:00" + + # Für draft-Posts: Setze sowohl 'date' als auch 'date_gmt' + # Für published-Posts: WordPress setzt automatisch bei Veröffentlichung extra_fields['date'] = publish_date + # date_gmt für explizite Kontrolle (ohne Zeitzone) + extra_fields['date_gmt'] = publish_date + print(f"Veröffentlichungsdatum: {publish_date}") + if status == 'draft': + print(f" (Hinweis: Datum wird erst beim Veröffentlichen aktiv)") # Beitrag erstellen skip_duplicates = global_settings.get('skip_duplicates', True)