0, 'reused' => 0, 'missing_file' => 0, 'missing_user' => 0, 'assigned' => 0, 'already' => 0]; $samples_ok = []; global $wpdb; $attach_by_file = []; foreach ($lines as $line) { [$aid, $login, $posts, $source, $filename] = explode("\t", $line); $aid = (int) $aid; $abs = $avatars_dir . '/' . $filename; if (!is_file($abs)) { $stats['missing_file']++; continue; } if (!get_userdata($aid)) { $stats['missing_user']++; continue; } // Si ya tiene foto_perfil, no tocar (preservar manual assignments) if (get_user_meta($aid, 'foto_perfil', true)) { $stats['already']++; continue; } // ¿Ya existe attachment para este fichero? (reutilizar) if (!isset($attach_by_file[$filename])) { $url = $avatars_url . '/' . $filename; $existing = $wpdb->get_var($wpdb->prepare( "SELECT ID FROM {$wpdb->posts} WHERE post_type='attachment' AND guid=%s LIMIT 1", $url )); if ($existing) { $attach_by_file[$filename] = (int) $existing; $stats['reused']++; } else { if ($dry) { $attach_by_file[$filename] = -1; // marcador dry } else { $attach_id = wp_insert_attachment([ 'guid' => $url, 'post_mime_type' => wp_check_filetype($abs)['type'] ?: 'image/png', 'post_title' => pathinfo($filename, PATHINFO_FILENAME), 'post_content' => '', 'post_status' => 'inherit', ], $abs); if (is_wp_error($attach_id) || !$attach_id) { error_log("[import_avatars] insert FAIL para $filename: " . (is_wp_error($attach_id) ? $attach_id->get_error_message() : 'unknown')); continue; } $meta = wp_generate_attachment_metadata($attach_id, $abs); wp_update_attachment_metadata($attach_id, $meta); $attach_by_file[$filename] = $attach_id; $stats['ok']++; } } } $attach_id = $attach_by_file[$filename]; if ($attach_id !== 0) { if (!$dry && $attach_id > 0) update_user_meta($aid, 'foto_perfil', (string) $attach_id); $stats['assigned']++; if (count($samples_ok) < 5) { $samples_ok[] = "user $aid ($login) → attach " . ($attach_id > 0 ? $attach_id : 'NEW') . " ($filename)"; } } } echo ($dry ? '[DRY] ' : '') . "Stats:\n"; foreach ($stats as $k => $v) echo " $k: $v\n"; echo "\nSamples:\n"; foreach ($samples_ok as $s) echo " $s\n";