wordpress-plugin manus v1
This commit is contained in:
parent
b6d64972a2
commit
fdcc714dea
458 changed files with 4939 additions and 35448 deletions
191
CHANGELOG.md
Normal file
191
CHANGELOG.md
Normal file
|
|
@ -0,0 +1,191 @@
|
|||
# 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 = '<figure class="wp-block-image';
|
||||
|
||||
// Add size class if available
|
||||
if (isset($block_attrs['sizeSlug'])) {
|
||||
$figure_html .= ' size-' . $block_attrs['sizeSlug'];
|
||||
}
|
||||
|
||||
$figure_html .= '">';
|
||||
|
||||
// Add image tag
|
||||
$figure_html .= '<img src="' . esc_url($src) . '" alt="' . esc_attr($alt) . '"';
|
||||
|
||||
// Add width and height if available
|
||||
if (isset($block_attrs['width']) && isset($block_attrs['height'])) {
|
||||
$figure_html .= ' width="' . esc_attr($block_attrs['width']) . '"';
|
||||
$figure_html .= ' height="' . esc_attr($block_attrs['height']) . '"';
|
||||
}
|
||||
|
||||
// Add class and close img tag
|
||||
$figure_html .= ' class="wp-image-' . esc_attr($attachment_id) . '"/>';
|
||||
|
||||
// Add caption if available
|
||||
if (isset($block_attrs['caption'])) {
|
||||
$figure_html .= '<figcaption>' . esc_html($block_attrs['caption']) . '</figcaption>';
|
||||
}
|
||||
|
||||
$figure_html .= '</figure>';
|
||||
|
||||
return '<!-- wp:image ' . json_encode($block_attrs) . ' -->' .
|
||||
$figure_html .
|
||||
'<!-- /wp:image -->';
|
||||
}
|
||||
```
|
||||
|
||||
## 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue