# Testreszabás

> Szűrők és kódrészletek a feed leírásának, áraknak, képeknek, azonosítóknak és a kizárt termékeknek a módosításához.

Ez a fejezet fejlesztőknek szól. A kódrészleteket a téma `functions.php` fájljába vagy egy saját bővítménybe teheted. A testreszabásokra nem vonatkozik a bővítmény támogatása, ha nem vagy biztos a kódban, kérd szakember segítségét.

## A leírás forrása

A leírás előállítását a beállítóoldal **Termékleírás** mezőjében választhatod ki (**Meglévő termékmező értékének használata**). A helyes választás attól függ, hogyan töltötted ki a termékadatokat. Az alapérték: **Fő termékleírás (lehetőleg teljes), valamint a variáció leírása**.

Ha teljesen egyedi leírás kell, használd a `woocommerce_gpf_feed_item_google` szűrőt:

```php
function sajat_gpf_feed_item( $feed_item, $product ) {
    // Itt módosítsd a $feed_item->description értékét.
    return $feed_item;
}
add_filter( 'woocommerce_gpf_feed_item_google', 'sajat_gpf_feed_item', 10, 2 );
```

## Elemek hozzáadása vagy felülírása

A feed objektum tulajdonságai történeti okokból két szinten vannak. Ha közvetlenül egy feedelemet adsz meg, a `woocommerce_gpf_elements` szűrőt használd. Példa: a „brand” elem kitöltése egy `supplier_brand_name` nevű egyéni mezőből:

```php
function sajat_gpf_marka( $elements, $product_id, $variation_id = null ) {
    $id = is_null( $variation_id ) ? $product_id : $variation_id;
    $product = wc_get_product( $id );
    $brand = $product->get_meta( 'supplier_brand_name' );
    if ( ! empty( $brand ) ) {
        $elements['brand'] = array( $brand );
    }
    return $elements;
}
add_filter( 'woocommerce_gpf_elements', 'sajat_gpf_marka', 11, 3 );
```

A termék tulajdonságainak jellegű értékeknél (például ár) a `woocommerce_gpf_feed_item_google` szűrő a megfelelő. A módosítható tulajdonságok az árakhoz:

- `regular_price_ex_tax`, `regular_price_inc_tax`: a normál ár adó nélkül és adóval,
- `sale_price_ex_tax`, `sale_price_inc_tax`: az akciós ár (`NULL`, ha nincs),
- `price_ex_tax`, `price_inc_tax`: az akciós ár, ha van, különben a normál ár.

## Termékek és variációk kizárása

A `woocommerce_gpf_exclude_product` szűrővel saját logika alapján zárhatsz ki termékeket:

```php
function sajat_gpf_kizaras( $excluded, $product_id, $feed_format ) {
    // true: kizárja a terméket, false: bennehagyja,
    // $excluded: marad az alapértelmezett viselkedés.
    return $excluded;
}
add_filter( 'woocommerce_gpf_exclude_product', 'sajat_gpf_kizaras', 11, 3 );
```

A variációkra a `woocommerce_gpf_exclude_variation` szűrő ugyanígy működik, de ilyenkor a `$product_id` az egyes variáció azonosítója.

## Képek

A feed alapból a „full” képméretet használja. Másik regisztrált méretre a `woocommerce_gpf_image_style` szűrővel válthatsz:

```php
add_filter( 'woocommerce_gpf_image_style', function ( $style ) {
    return 'shop_catalog';
} );
```

Ha csak a fő termékképet szeretnéd elküldeni:

```php
add_filter( 'woocommerce_gpf_include_product_gallery_images', '__return_false' );
add_filter( 'woocommerce_gpf_include_attached_images', '__return_false' );
```

A bővítmény alapból ezeket a képeket küldi: a variáció képét, a **Termékkép**et, a **Termékgaléria** képeit és a termékhez csatolt egyéb médiafájlokat. Az elsődleges kép az elsőként talált kép. A termékszerkesztő **Termékfeed-információk** dobozában a **Képek kezelése** gombbal pontosan kiválaszthatod, melyik kép szerepeljen, és melyik legyen az elsődleges. Alapból a doboz az összes talált kép bélyegképét mutatja, jelzi, hogy be van-e vonva a feedbe, és csillaggal jelöli az elsődleges képet. A **Képek kezelése** gombbal módosíthatod ezeket, a változtatások automatikusan mentődnek.

## Egyéni mező előtöltési forrásként

Az előtöltési lehetőségek között alapból nincsenek rejtett meta- vagy egyéni mezők. Ha egyet fel szeretnél venni (a `_my_custom_field` helyére a mező neve kerül):

```php
add_filter( 'woocommerce_gpf_custom_field_list', function ( $list ) {
    $list['meta:_my_custom_field'] = 'Saját mező';
    return $list;
} );
```

A kód bekerülése után a beállítóoldalon kattints a **frissítened kell a mezőlistát** hivatkozásra, csak ezután lesz választható az új mező.

## Szállítási súly és méretek törlése

A szállítási súly eltávolítása:

```php
add_filter( 'woocommerce_gpf_feed_item_google', function ( $feed_item ) {
    $feed_item->shipping_weight = null;
    return $feed_item;
} );
```

A szállítási méretek (hosszúság, szélesség, magasság) eltávolítása:

```php
add_filter( 'woocommerce_gpf_elements_google', function ( $elements, $product_id ) {
    unset( $elements['shipping_width'], $elements['shipping_length'], $elements['shipping_height'] );
    return $elements;
}, 11, 2 );
```

## Címek

Változó termékeknél a bővítmény egyedi címet állít elő minden variációhoz, a jellemzők nevével együtt, ahogy a Google megköveteli, például: „Widget (Méret: Kicsi, Szín: Világos)”. Sok jellemzőnél a cím túl hosszú lehet. A jellemzőnevek elhagyásához („Widget (Kicsi, Világos)”) használd:

```php
add_filter( 'woocommerce_gpf_include_attribute_labels_in_title', '__return_false' );
```

A feedcím forrását a beállítóoldalon választhatod ki a **Cím** mezőnél. Egy termékre kézzel is megadhatsz címet a termékszerkesztő **Termékfeed-információk** dobozában (**Közös mezők**, a **Cím** mező). Programozottan a `woocommerce_gpf_title` szűrővel módosíthatod:

```php
add_filter( 'woocommerce_gpf_title', function ( $title, $product_id ) {
    // Itt módosítsd a $title értékét.
    return $title;
}, 10, 2 );
```

## Azonosító (ID)

A bővítmény minden tételhez a Google követelményeinek megfelelő egyedi azonosítót állít elő. Módosítani nem javasolt: az azonosítónak egyedinek és időben állandónak kell lennie, ezért az SKU vagy az MPN sem jó választás. Egy meglévő feed azonosító-formátumának megváltoztatása duplikált termékeket hoz létre, amelyeket a Google-nek újra jóvá kell hagynia. Ha mégis módosítod, a `woocommerce_gpf_feed_item_google` szűrőben a `$feed_item->guid` értékét írd át (változó termékeknél az `item_group_id` is módosítandó lehet).

## Termék-URL

A feedben küldött termék-URL a `woocommerce_gpf_feed_item_google` szűrőben a `$feed_item->purchase_link` módosításával változtatható meg.
