// 4. Hauptfunktion zum Anlegen & Befüllen der Produktdaten (inkl. Preise-Repeater) function at_feed_importer_save_product(array $data) { $post_args = array( 'post_title' => sanitize_text_field($data['title'] ?? ''), 'post_content' => wp_kses_post($data['description'] ?? ''), 'post_type' => 'product', 'post_status' => 'draft', ); if (!empty($data['post_id'])) { $post_args['ID'] = intval($data['post_id']); $post_id = wp_update_post($post_args); } else { $post_id = wp_insert_post($post_args); } if (is_wp_error($post_id) || !$post_id) { return $post_id; } // --- SHOP TAXONOMIE ERSTELLEN / ERMITTELN --- $shop_term_id = ''; if (!empty($data['shop'])) { $shop_name = trim($data['shop']); $term = term_exists($shop_name, 'product_shop'); if (!$term) { $term = wp_insert_term($shop_name, 'product_shop'); } if (!is_wp_error($term) && isset($term['term_id'])) { $shop_term_id = $term['term_id']; wp_set_object_terms($post_id, intval($shop_term_id), 'product_shop', false); } } // --- AFFILIATETHEME REPEATER-FELD "PREISE" (product_shops) BEFÜLLEN --- $price_entry = array( 'price' => sanitize_text_field($data['price'] ?? ''), 'price_old' => sanitize_text_field($data['price_old'] ?? ''), 'currency' => !empty($data['currency']) ? sanitize_text_field($data['currency']) : 'EUR', 'link' => esc_url_raw($data['url'] ?? ''), 'shop' => $shop_term_id, 'portal' => 'sonstige', 'sku' => sanitize_text_field($data['ean'] ?? ''), 'additional_hint' => '', ); // Array für die Tabellenzeile im Postmeta speichern update_post_meta($post_id, 'product_shops', array($price_entry)); // --- STANDARD META-FELDER FÜR FILTER & SORTIERUNG --- update_post_meta($post_id, 'product_price', sanitize_text_field($data['price'] ?? '')); update_post_meta($post_id, 'product_price_old', sanitize_text_field($data['price_old'] ?? '')); update_post_meta($post_id, 'product_currency', !empty($data['currency']) ? sanitize_text_field($data['currency']) : 'EUR'); update_post_meta($post_id, 'product_url', esc_url_raw($data['url'] ?? '')); update_post_meta($post_id, 'product_ean', sanitize_text_field($data['ean'] ?? '')); // --- KATEGORIEN & MARKE --- if (!empty($data['categories'])) { $categories = is_array($data['categories']) ? array_map('trim', $data['categories']) : array(trim($data['categories'])); wp_set_object_terms($post_id, $categories, 'product_category', false); } if (!empty($data['brand'])) { wp_set_object_terms($post_id, trim($data['brand']), 'product_brand', false); } // --- BILDER-IMPORT --- if (!empty($data['image_url'])) { $attachment_id = at_feed_importer_sideload_image($data['image_url'], $post_id, $data['title'] ?? ''); if ($attachment_id && !is_wp_error($attachment_id)) { set_post_thumbnail($post_id, $attachment_id); } } return $post_id; }JFIF   #!##""$'(#'5  !" )"("$"","(!"#""$$#$!/"!'$*"{ !1AQ"2q4Rar3BSbCs ??HD|Ele3lF2QSR٥/f W\u,*'% sn1v}!UFNfwp]1 ܃#}S'ۧoޚs5ђRN` m,5Ռ3ٹ;6ݹ݁=Պѵl=%)'ח1]I|AGSUͻ:}Ɲy{ , ך̡rI&y 6N戛bNSK|7.]R˗YQgL\Ѓ}4q:,4ԏ1{(' ,xYѥ1t'8n%7G8AB3r873qJ5aJםiMQ_τ:/SV4^bTj6Y3Ezo?)G٘Ւi(!)>-z^Ec;fj1T'7n F23L5,D&/NԒ,"P:*O.Ђ%*𔒧}׺1>|5 (Fz5I%*Ii;F^cGƧ'ݗ*1rJ gqЮEӚPNYֲԊ6FU$V{;J3Vu+UɢХq%.n:?8o`FὂIIz3+-HQs=L'RekbT(ru$+4VJٳ!N'h:5e>#P@}̬}6 7I#t{0$ԭЊ^m-:KYq3/[R)I?e'NJB7\՟@@