# Markdown Parser WP - Fehlerbehebungen ## Übersicht der Korrekturen Dieses Update behebt die folgenden Probleme im Markdown Parser WP Plugin: 1. **Tags-Mapping**: Tags werden jetzt korrekt erstellt und mit IDs verarbeitet 2. **Beitragsbilder**: Der Import und die Zuweisung von Beitragsbildern funktionieren jetzt zuverlässig 3. **Bild-Blöcke**: Die Konvertierung von Markdown-Bildern zu Gutenberg-Blöcken wurde verbessert ## Detaillierte Änderungen ### 1. Tags-Mapping Die `map_metadata_to_taxonomies`-Methode in der `MarkdownParser`-Klasse wurde überarbeitet, um: - Zu überprüfen, ob Tags bereits existieren - Neue Tags zu erstellen, wenn sie nicht existieren - Die korrekten Tag-IDs zurückzugeben statt nur der Tag-Namen - Die Tags korrekt mit dem Beitrag zu verknüpfen ```php public static function map_metadata_to_taxonomies($metadata) { $taxonomies = []; // Map tags from keywords if (isset($metadata['keywords']) && is_array($metadata['keywords'])) { $tag_ids = []; foreach ($metadata['keywords'] as $keyword) { $tag_name = sanitize_text_field($keyword); // Check if tag exists $existing_tag = get_term_by('name', $tag_name, 'post_tag'); if ($existing_tag) { // Use existing tag ID $tag_ids[] = (int) $existing_tag->term_id; } else { // Create new tag and get its ID $new_tag = wp_insert_term($tag_name, 'post_tag'); if (!is_wp_error($new_tag)) { $tag_ids[] = (int) $new_tag['term_id']; } } } // Store tag IDs $taxonomies['post_tag'] = $tag_ids; } return $taxonomies; } ``` ### 2. Beitragsbilder Die Funktionalität zum Importieren und Setzen von Beitragsbildern wurde verbessert: - Die `set_featured_image`-Methode in der `PostCreator`-Klasse wurde überarbeitet, um relative URLs besser zu behandeln - Eine neue `import_external_image`-Methode wurde direkt in der `PostCreator`-Klasse implementiert - Die WordPress-Funktion `media_sideload_image` wird jetzt verwendet, mit einem Fallback auf eine manuelle Import-Methode - Zusätzliche Metadaten werden gespeichert, um die Bild-URL und ID zu referenzieren ```php private static function set_featured_image($post_id, $metadata, $original_url = '') { $image_url = null; // Check for image in metadata if (isset($metadata['image'])) { $image_url = $metadata['image']; } elseif (isset($metadata['cover']) && isset($metadata['cover']['image'])) { $image_url = $metadata['cover']['image']; // Handle relative URLs if (isset($metadata['cover']['relative']) && $metadata['cover']['relative'] === true && !empty($original_url)) { // Determine base URL from original URL $base_url = dirname($original_url) . '/'; $image_url = $base_url . $image_url; } } if ($image_url) { // Make sure the image URL is valid if (!filter_var($image_url, FILTER_VALIDATE_URL)) { // Try to make it a valid URL if it's a relative path if (strpos($image_url, 'http') !== 0 && !empty($original_url)) { $base_url = dirname($original_url) . '/'; $image_url = $base_url . ltrim($image_url, '/'); } } // Download and set featured image $attachment_id = self::import_external_image($image_url, $post_id); if ($attachment_id && !is_wp_error($attachment_id)) { // Set as featured image set_post_thumbnail($post_id, $attachment_id); // Also store the attachment ID as post meta for reference update_post_meta($post_id, '_markdown_parser_featured_image_id', $attachment_id); update_post_meta($post_id, '_markdown_parser_featured_image_url', $image_url); } } } ``` ### 3. Bild-Blöcke Die Konvertierung von Markdown-Bildern zu Gutenberg-Blöcken wurde verbessert: - Die `create_image_block`-Methode in der `BlocksConverter`-Klasse wurde überarbeitet - Bild-Dimensionen werden jetzt korrekt gesetzt - Bildunterschriften werden unterstützt - Die richtige CSS-Klasse wird für WordPress-Bilder gesetzt ```php private static function create_image_block($src, $alt = '', $attachment_id = '') { $block_attrs = [ 'url' => $src, 'alt' => $alt ]; if ($attachment_id) { $block_attrs['id'] = (int) $attachment_id; // Get image dimensions if available $image_meta = wp_get_attachment_metadata($attachment_id); if ($image_meta && isset($image_meta['width']) && isset($image_meta['height'])) { $block_attrs['width'] = $image_meta['width']; $block_attrs['height'] = $image_meta['height']; $block_attrs['sizeSlug'] = 'full'; } // Get caption if available $attachment = get_post($attachment_id); if ($attachment && !empty($attachment->post_excerpt)) { $block_attrs['caption'] = $attachment->post_excerpt; } } // Create the image block with proper figure and figcaption if needed $figure_html = '
'; // Add image tag $figure_html .= '' . esc_attr($alt) . ''; // Add caption if available if (isset($block_attrs['caption'])) { $figure_html .= '
' . esc_html($block_attrs['caption']) . '
'; } $figure_html .= '
'; return '' . $figure_html . ''; } ``` ## Installation 1. Deaktivieren Sie die vorherige Version des Plugins in WordPress 2. Löschen Sie das alte Plugin-Verzeichnis 3. Laden Sie die neue Zip-Datei `markdown-parser-wp-fixed.zip` hoch 4. Aktivieren Sie das Plugin wieder ## Testergebnisse Die Korrekturen wurden umfassend getestet und funktionieren wie erwartet: - Tags werden korrekt erstellt und mit IDs verarbeitet - Beitragsbilder werden korrekt importiert und gesetzt - Bild-Blöcke werden korrekt konvertiert mit allen erforderlichen Attributen Bei Fragen oder Problemen stehe ich gerne zur Verfügung.