# Modifiche: Mapping Campo Logo

**Data:** 15 Dicembre 2025  
**File modificato:** `class-entourance-product.php`  
**Descrizione:** Aggiunto il mapping del campo `logo` alla classe `Entourance_Product`

---

## 1. Aggiunta Proprietà Pubblica `$logo`

**Posizione:** Riga ~306 (dopo la proprietà `$cover`)

```php
/**
 * Entourance product logo
 *
 * @var string $logo logo image URL.
 */
public $logo;
```

---

## 2. Estrazione Campo Logo dall'Item API

**Posizione:** Riga ~630 (nel metodo `entourance_create_product`)

**Prima:**
```php
$images = entourance_get_images($item, $type_ent_product);
$cover = (isset($item['cover'])) ? $item['cover'] : null;

// Get translations
$translations = (isset($item['translations'])) ? $item['translations'] : null;
```

**Dopo:**
```php
$images = entourance_get_images($item, $type_ent_product);
$cover = (isset($item['cover'])) ? $item['cover'] : null;
$logo = (isset($item['logo'])) ? $item['logo'] : null;

// Get translations
$translations = (isset($item['translations'])) ? $item['translations'] : null;
```

---

## 3. Assegnazione Logo al Prodotto

**Posizione:** Riga ~839 (dopo l'assegnazione di `realm_id`)

```php
// Aggiungi il campo realm_id se presente
$product->realm_id = isset($item['realm_id']) ? $item['realm_id'] : null;

// Aggiungi il campo logo se presente
$product->logo = $logo;

// Aggiungi il campo subtitle (tradotto)
$product->subtitle = $subtitle;
```

---

## Utilizzo

### Nel Codice PHP

```php
// Ottenere un prodotto con il logo
$product = Entourance_Product::entourance_create_product($item, 'experience', 'it_IT');

// Verificare e utilizzare il logo
if ($product->logo) {
    echo '<img src="' . esc_url($product->logo) . '" alt="Logo">';
}
```

### Nei Template WordPress

```php
<?php if (isset($item->logo) && !empty($item->logo)) : ?>
    <div class="product-logo">
        <img src="<?php echo esc_url($item->logo); ?>" 
             alt="<?php echo esc_attr($item->name ?? 'Logo'); ?>"
             class="product-logo-img">
    </div>
<?php endif; ?>
```

### Esempio con Attributi HTML Completi

```php
<?php if (!empty($item->logo)) : ?>
    <figure class="product-logo-wrapper">
        <img src="<?php echo esc_url($item->logo); ?>" 
             alt="Logo di <?php echo esc_attr($item->name ?? 'prodotto'); ?>"
             class="product-logo"
             loading="lazy"
             width="200"
             height="200">
    </figure>
<?php endif; ?>
```

---

## Caratteristiche della Modifica

- ✅ **Compatibilità:** Funziona con tutti i tipi di prodotto (experience, event, host, eatery, poi, itinerary, article)
- ✅ **Cache:** Il logo viene salvato nella cache insieme agli altri dati del prodotto
- ✅ **Fallback:** Se il campo `logo` non è presente nell'API, viene impostato a `null`
- ✅ **Tipo dato:** Il logo è una stringa contenente l'URL dell'immagine

---

## Note Tecniche

1. **Formato URL:** Il campo `logo` contiene l'URL completo dell'immagine logo
2. **Validazione:** Non è necessaria validazione aggiuntiva, l'URL viene gestito dall'API
3. **Cache:** Il logo viene memorizzato nella cache per 30 minuti (1800 secondi)
4. **Sanificazione:** Utilizzare sempre `esc_url()` quando si stampa il logo in HTML

---

## Riepilogo Modifiche

| Modifica | Posizione | Descrizione |
|----------|-----------|-------------|
| Dichiarazione proprietà | ~Riga 306 | Aggiunta proprietà pubblica `$logo` |
| Estrazione da API | ~Riga 630 | Estrazione del campo logo dall'array item |
| Assegnazione | ~Riga 839 | Assegnazione del logo all'oggetto prodotto |

---

## Compatibilità API

Il campo `logo` viene estratto direttamente dalla risposta API Entourance:

```json
{
  "id": 123,
  "name": "Nome Prodotto",
  "cover": "https://api.example.com/cover.jpg",
  "logo": "https://api.example.com/logo.png",
  ...
}
```

Se l'API non restituisce il campo `logo`, il valore sarà `null` e non causerà errori.

---

**Fine Documento**





