# PHP-szűrők: értékek, azonosítók és profit

> Szűrők a konverzióértékekhez, a Google Ads és Meta többpixeles kimenethez, a termékazonosítókhoz, a haszonkövetéshez, a rendeléstételekhez és az elemzési paraméterekhez.

A felhasználói felület célja, hogy a bővítmény egyszerűen használható legyen. Azoknak, akiknek ennél sokkal finomabb irányításra van szükségük, szűrők (filterek) állnak rendelkezésre, amelyekkel a bővítmény viselkedését programozottan módosíthatod. A szűrők a gyermektéma `functions.php` fájljába vagy egy egyedi bővítménybe tehetők. A legegyszerűbb és legbiztonságosabb a `functions.php`.

Ez a fejezet az értékekre, azonosítókra és a profitra vonatkozó szűrőket tartalmazza. A szerveroldali küldést érintő szűrők a [Szerveroldali szűrők](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-php-szurok-szerveroldal/), a többi a [További szűrők](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-php-szurok-egyeb/) fejezetben vannak.

## A `$order` argumentum

Minden szűrő, amely rendelést hordoz, a WooCommerce-rendelést (`WC_Order`) adja át, akár a rendelés-megerősítő oldalon a böngészős eseményhez számolódik az érték, akár a pénztári kérés végén egy szerveroldali eseményhez. A típusmegadás vagy az `instanceof WC_Order` ellenőrzés biztonságos. A régebbi változatokon a szerveroldali útvonal a bővítmény saját belső rendelésobjektumát adta át, ezért az a visszahívás, amely `WC_Order` típust írt elő, végzetes hibával állította le a pénztári kérést, az `instanceof` ellenőrzés pedig csendben semmit nem csinált. Ez javítva van, a kerülőmegoldásokat (például a `get_native_order()` használatát) el lehet hagyni.

## Marketing-konverzióérték szűrő

A marketing-konverzióérték szűrővel újraszámolhatod a konverzió értékét. A kimenet csak a fizetett hirdetési (marketing) pixelek konverzióértékét érinti, a Google Analytics értékét nem.

```php
add_filter('pmw_marketing_conversion_value_filter', function ($order_total, $order) {
    return $order_total * 0.9;
}, 10, 2);
```

## Analitikai rendelésérték-szűrők

A marketing-konverzióérték szűrő szándékosan békén hagyja az analitikai értéket. Ez a két szűrő a párja: az elemzési oldal rendelésértékét módosítják, a fizetett hirdetési pixelek jelentését nem érintik.

A `pmw_order_value_total_statistics` a rendelés végösszegét szűri. Ez az érték jut el:

- a Google Analytics `purchase` eseményéhez, a böngészős és a szerveroldali Measurement Protocol eseményhez is,
- a Google Analytics `refund` eseményeihez, amelyek összege ebből származik,
- a `pmwDataLayer.order.value.total` mezőhöz, és vele a Microsoft Clarity, a Contentsquare, a GroundTruth és a VWO vásárlási bevételéhez.

```php
add_filter('pmw_order_value_total_statistics', function ($order_total, $order) {
    return $order_total - (float) $order->get_shipping_total();
}, 10, 2);
```

A `pmw_order_value_subtotal_statistics` az `$order->get_subtotal()` értéket szűri, vagyis a tételek összegét szállítás, díjak és adó nélkül. A `pmwDataLayer.order.value.subtotal` mezőbe kerül. Egyetlen pixel sem olvassa ezt a kulcsot, a saját kódod és az [eseményszűrők](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-esemenyszurok/) számára van ott.

```php
add_filter('pmw_order_value_subtotal_statistics', function ($order_subtotal, $order) {
    return $order_subtotal;
}, 10, 2);
```

> **Figyelem:** Mindkét szűrő az érték két tizedesre kerekítése előtt fut. Számot adj vissza, ne formázott szöveget.

## További Google Ads konverziós pixelek

Ez a szűrő csak akkor működik, ha a fő Conversion ID és Conversion Label be van állítva a Pixel Managerben a **Tracking Pixels → Google (Ads & GA4)** alatt (ez kapcsolja be a Google Ads konverziókövetést egyáltalán).

A szűrővel programozottan több Google Ads konverziós pixelt adhatsz hozzá. További konverzióazonosító-címke párokat ad a Google Ads pixel kimenetéhez, és a kimenetet minden olyan oldalra kiírja, ahol a Google Ads remarketingpixel van, a vásárlást megerősítő oldalt is beleértve.

Két példa van. Az első, gyakoribb példa egyedi azonosító-címke párokat ad hozzá: akkor hasznos, ha ugyanahhoz a weboldalhoz több Google Ads fiókkal futtatsz kampányokat.

```php
add_filter('pmw_google_ads_conversion_identifiers', function ($conversion_identifiers) {
    $conversion_identifiers['CONVERSION_ID_2'] = 'CONVERSION_LABEL_2';
    $conversion_identifiers['CONVERSION_ID_3'] = 'CONVERSION_LABEL_3';
    return $conversion_identifiers;
});
```

A második példa több címkét ad ugyanahhoz a konverzióazonosítóhoz: akkor hasznos, ha egy Google Ads fiókon belül különböző vásárlási konverziós műveleteket akarsz követni, például ha egy fiókkal több weboldalhoz futtatsz kampányt, és mindegyiknek külön konverziós műveletet akarsz.

```php
add_filter('pmw_google_ads_conversion_identifiers', function ($conversion_identifiers) {
    $conversion_identifiers['CONVERSION_ID_1'] = [
        $conversion_identifiers['CONVERSION_ID_1'],
        'CONVERSION_LABEL_2',
        'CONVERSION_LABEL_3',
    ];
    return $conversion_identifiers;
});
```

## További Facebook-pixelek

Ez a szűrő csak akkor működik, ha a fő Pixel ID be van állítva a Pixel Managerben a **Tracking Pixels** alatt a Facebook (Meta) részen (ez kapcsolja be a Facebook-pixelt egyáltalán).

A szűrővel programozottan több Facebook (Meta) pixelt adhatsz hozzá. Minden esemény, minden oldalon az összes beállított pixelnek megy. Akkor hasznos, ha ugyanazt a boltot több Facebook-hirdetési fiókban vagy adatforrásban (dataset) akarod követni.

> **Tipp:** Mielőtt második pixelt adnál hozzá, nézd meg, nem oldja-e meg az esetedet a meglévő pixel megosztása a másik hirdetési fiókkal. Egyetlen adatforrás együtt tartja az összes konverziót, közönséget és tanulást, és a Meta saját legjobb gyakorlata is ez.

A szűrő olyan tömböt kap, amelyet már feltöltött a beállításokban megadott pixel, a Conversion API tokenjével és a tesztesemény-kódjával együtt. Fűzd hozzá a további pixeleket, és add vissza a tömböt. Minden pixel egy tömb a következő kulcsokkal:

- `pixel_id` (kötelező): a Facebook-pixel azonosítója. Számnak kell lennie. Az érvényes pixelazonosító nélküli bejegyzéseket figyelmen kívül hagyja, a többször szereplő azonosítót pedig csak egyszer használja.
- `capi_token` (nem kötelező, Pro): a pixelhez tartozó Conversion API hozzáférési token. Ha megadod, az összes szerveroldali esemény (vásárlások, általános szerveroldali események és az előfizetés-életciklus események) is ennek a pixelnek megy. Ha kihagyod, a pixel csak böngészős eseményeket kap.
- `test_event_code` (nem kötelező, Pro): a pixelhez tartozó Conversion API tesztesemény-kód. Minden pixelt a saját kódjával tesztelsz.

Példa második pixelre, csak böngészős eseményekkel:

```php
add_filter('pmw_facebook_pixel_identifiers', function ($pixel_identifiers) {
    $pixel_identifiers[] = [
        'pixel_id' => 'PIXEL_ID_2',
    ];
    return $pixel_identifiers;
});
```

Példa második pixelre a Conversion API-val (Pro):

```php
add_filter('pmw_facebook_pixel_identifiers', function ($pixel_identifiers) {
    $pixel_identifiers[] = [
        'pixel_id'        => 'PIXEL_ID_2',
        'capi_token'      => 'CAPI_TOKEN_2',
        'test_event_code' => 'TEST_EVENT_CODE_2',
    ];
    return $pixel_identifiers;
});
```

A böngészős és a Conversion API események eseményenként ugyanazt az eseményazonosítót kapják, és a Facebook pixelenként kettőzésmentesít, így minden pixel minden eseményt pontosan egyszer kap. Ha a szerveroldali proxyt használod, a Pixel Manager a további pixeleket automatikusan szinkronizálja a proxyhoz. A szűrőben végzett módosítás után az új beállítás néhány percen belül érvénybe lép. Azonnali szinkronhoz nyisd meg a Pixel Manager beállításait a **Server-Side → SweetCode Server-Side Proxy** részen, és kattints a **Sync Now** gombra.

### A további pixelek működésének ellenőrzése

1. Nyiss meg egy tetszőleges oldalt a boltban, és nézd meg az adatréteget a böngészőkonzolban. A `pmwDataLayer.pixels.facebook.pixel_ids` felsorolja az összes pixelt, amelyet a böngésző inicializál. A hozzáférési tokenek soha nem részei az adatrétegnek, a szerveren maradnak.
2. Futtasd a `fbq.getState().pixels` parancsot a böngészőkonzolban. Inicializált pixelenként egy bejegyzést mutat.
3. Figyeld a `facebook.com/tr` kéréseket a Hálózat fülön. Minden esemény pixelenként egy kérést állít elő, mind ugyanazzal az `eid` (eseményazonosító) értékkel, hogy a Meta kettőzésmentesíthessen a szerveroldali eseményekkel.
4. A Conversion API-hoz használd a Meta Test Events eszközét az egyes pixelek saját Events Manager nézetében, az adott pixel `test_event_code` kódjával.
5. A Pixel Manager hibakeresési jelentése a Meta szakaszokban felsorolja az összes beállított pixelt, a Meta Event Setup Tool és a Meta Business Category Event Restrictions ellenőrzésekkel együtt.

> **Vigyázat:** Ne tedd a szűrő kimenetét az aktuális oldaltól, az aktuális terméktől vagy a bejelentkezett felhasználótól függővé. A szerveroldali események olyan környezetben futnak, amelynek semmi köze ahhoz az oldalhoz, amelyen a látogató volt, például egy WooCommerce rendelési hook vagy egy előfizetés-megújítás váltja ki a vásárlást. Egy feltételes szűrő ezért olyan pixelt eredményezhet, amely a böngészős eseményt megkapja, a hozzá tartozó szerveroldali eseményt viszont nem. Minden kérésnél ugyanazt a pixelkészletet add vissza. Minden további pixel megsokszorozza a Metának küldött kérések számát a böngészőben és, ha Conversion API tokent kap, a szerveren is. Csak azokat a pixeleket add hozzá, amelyekre tényleg szükséged van.

## A Google Ads konverziómódosítási adatforrás védelme

> **Prémium funkció.** Ez a szűrő csak akkor érvényes, ha a Google Ads konverziómódosítások (Conversion Adjustments) funkció aktív. A régebbi változatok a szűrő regisztrálása után minden kérésre `401 invalid_username` hibával válaszoltak, mert a WordPress a hitelesítő adatokat alkalmazásjelszavas belépésként olvasta, mielőtt a Pixel Manager ellenőrizhette volna.

A Pixel Manager nyilvános CSV-adatforrást nyújt a `/wp-json/pmw/v1/google-ads/conversion-adjustments.csv` címen, amelyet a Google Ads a **Célok → Konverziók → Feltöltések → Ütemezések** (Goals → Conversions → Uploads → Schedules) alatt beállított ütemezés szerint kér le. Az adatforrás a friss lemondott és visszatérített rendelések adatait tartalmazza (rendelésazonosító, módosítási idő, érték, pénznem).

Alapból az URL hitelesítés nélkül elérhető. A Google ütemezett feltöltése a felhasználónevet és a jelszót nem kötelezőként kezeli, ezért a legtöbb bolt soha nem igényli ezt a szűrőt. Ha le akarod zárni az adatforrást, hogy egy versenytárs vagy robot ne arathassa le a visszatérítési adataidat, regisztráld a `pmw_google_ads_conversion_adjustments_credentials` szűrőt, amely HTTP Basic hitelesítést követel meg.

A szűrőnek `user` és `pass` kulcsú tömböt kell visszaadnia. Ha hitelesítő adatot ad vissza, az adatforrás minden olyan kérésre `401 Unauthorized` választ ad, amely nem mutat be egyező `Authorization: Basic` adatokat. Az adatforrás függetlenül attól, hogy a szűrő aktív-e, IP-nként percenként 30 kérésre van korlátozva.

Ezek az adatok csak az adatforrás hitelesítő adatai. Nem WordPress-felhasználó, ezért nem kell WordPress- vagy WooCommerce-fiókot létrehoznod hozzájuk. Válassz tetszőleges felhasználónevet és egy hosszú, véletlen jelszót.

```php
add_filter('pmw_google_ads_conversion_adjustments_credentials', function () {
    return [
        'user' => 'gads-feed',
        'pass' => 'ide-egy-hosszu-veletlen-szoveg-kerul',
    ];
});
```

Ezután a Google Adsben:

1. Nyisd meg a **Goals → Conversions → Uploads → Schedules** oldalt.
2. Szerkeszd a meglévő conversion-adjustments.csv ütemezést (vagy hozz létre újat).
3. Írd be ugyanazt a `user` értéket a **Username (optional)**, és ugyanazt a `pass` értéket a **Password (optional)** mezőbe.
4. Kattints a **Save & Preview** gombra, hogy megerősítsd: a Google Ads eléri az adatforrást.

> **Ne a Data Manageren át kösd be az adatforrást.** A Google Ads Data Manager is kínál HTTPS-adatforrást, ott viszont a felhasználónév és a jelszó kötelező. A Data Manager azonban nem tud konverziómódosítást fájlból importálni: a konverzióimportjának nincs módosítástípus vagy módosított érték mezője, ezért az adatforrás ott nem képezhető le. Ehhez az adatforráshoz az Uploads → Schedules oldalt használd.

**Tárhelykompatibilitás.** Néhány FastCGI alatt futó PHP-t használó tárhely eldobja az `Authorization` fejlécet, mielőtt a PHP látná. Ha a Google Ads a szűrő bekapcsolása után hitelesítési hibát jelez, kérd meg a tárhelyszolgáltatót, hogy továbbítsa az `Authorization` fejlécet a PHP-nek, vagy add hozzá ezt a szabályt a webhely `.htaccess` fájljához:

```text
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
```

**Erős jelszó generálása.** Használj jelszókezelőt, vagy futtasd az `openssl rand -base64 32` parancsot egy hosszú, véletlen szöveg előállításához. Minél hosszabb a jelszó, annál biztonságosabb az adatforrás.

## A Google Analytics konfigurációs paramétereinek módosítása

A felület egyszerűen tartása érdekében csak az alapvető paramétereket vettük fel, mint az Enhanced Link Attribution. Azoknak, akiknek sokkal finomabb irányításra van szükségük a Google Analytics konfigurációs paraméterei felett, szűrő áll rendelkezésre. A szűrővel a felületen beállított paramétereket is felülírhatod.

A GA4 a oldalmegtekintésekből az IP-címeket eleve anonimizáltan dolgozza fel, ez nem változtatható. A Universal Analyticshez az alapparaméterek szintén anonimizálják az IP-t, ezt az alábbi szűrővel felülírhatod.

Az alábbi kód eltávolítja az `anonymize_ip` paramétert az összes Google Universal Analytics konfigurációról:

```php
add_filter('pmw_ga_ua_parameters', function ($analytics_parameters, $analytics_id) {
    unset($analytics_parameters['anonymize_ip']);
    return $analytics_parameters;
}, 10, 2);
```

Az alábbi csak az adott Google Universal Analytics tulajdonság paramétereit módosítja:

```php
add_filter('pmw_ga_ua_parameters', function ($analytics_parameters, $analytics_id) {
    if ('UA-12345678-3' == $analytics_id) {
        unset($analytics_parameters['anonymize_ip']);
        $analytics_parameters['link_attribution'] = true;
    }
    return $analytics_parameters;
}, 10, 2);
```

Ha a Google Universal Analytics tulajdonságodban a `link_attribution` részletesebb beállítását akarod:

```php
add_filter('pmw_ga_ua_parameters', function ($analytics_parameters, $analytics_id) {
    if ('UA-12345678-3' == $analytics_id) {
        $analytics_parameters['link_attribution'] = [
            'cookie_name'    => '_gaela',
            'cookie_expires' => 60,
            'levels'         => 2,
        ];
    }
    return $analytics_parameters;
}, 10, 2);
```

A következő szűrővel pedig a GA4 hibakeresési módját kapcsolhatod be:

```php
add_filter('pmw_ga_4_parameters', function ($analytics_parameters, $analytics_id) {
    $analytics_parameters['debug_mode'] = true;
    return $analytics_parameters;
}, 10, 2);
```

## Termékazonosító-kimenet szűrője a fizetett hirdetési pixelekhez

A felület egyszerűsége és a több hirdetési csatornán való egységes beállítás érdekében a felületen egyetlen beállítás szabályozza a termékazonosító kimenetét. Ugyanazt az azonosítót használja az összes fizetett hirdetési pixel. Az alapbeállítás a bejegyzésazonosító (post ID, például `14`), a WooCommerce Google Feed bővítmény azonosítója (például `woocommerce_gpf_14`) vagy a cikkszám (SKU, például `Hoodie`). Néha különböző csatornákon különböző azonosítótípust kell használnod, például a Google Adsnél a bejegyzésazonosítót, a Metánál a cikkszámot. Ilyenkor az alábbi szűrő egy adott pixel kimenetét módosítja. Szükség esetén az azonosítót teljesen testre is szabhatod.

> **Ajánlás:** Erősen ajánljuk a bejegyzésazonosító használatát minden termékkatalógusban és a termékazonosító-kimenetben. Ez a legkompatibilisebb, és okozza a legkevesebb gondot.

### Csatornánkénti termékazonosító-típusok

A pixel nevét a szűrő nevéhez fűzve választhatod ki, melyik pixelt akarod módosítani. A Metához (Facebook) a `pmw_product_id_type_for_facebook`, a Microsoft Adshez (Bing) a `pmw_product_id_type_for_bing` és így tovább. A következő pixelek használhatók:

- `adroll`
- `bing` (a Microsoft Ads pixelhez)
- `facebook` (a Meta pixelhez)
- `google_ads`
- `linkedin`
- `outbrain`
- `pinterest`
- `reddit`
- `snapchat`
- `taboola`
- `tiktok`
- `twitter`

Az alapértelmezett értékek: `post_id` a bejegyzésazonosítóhoz, `gpf` a WooCommerce Google Feed azonosítóhoz (például `woocommerce_gpf_14`) és `sku` a cikkszámhoz.

A Meta (Facebook) kimenetének cikkszámra váltása:

```php
add_filter('pmw_product_id_type_for_facebook', function () {
    return 'sku';
});
```

A Meta (Facebook) kimenetének bejegyzésazonosítóra váltása:

```php
add_filter('pmw_product_id_type_for_facebook', function () {
    return 'post_id';
});
```

### Egyedi termékazonosítók

A `pmw_product_ids` szűrővel a termékazonosító-kimenetet teljesen testre is szabhatod, és egy adott csatornához rendelheted.

A példában a `pmw_product_ids` szűrővel termékenként egy vagy több egyedi azonosítót adunk hozzá. Második lépésben a `pmw_product_id_type_for_` szűrővel az új egyedi azonosítót egy vagy több pixelhez rendeljük.

1. A következő szűrő létrehozza az egyedi termékazonosítókat:

```php
add_filter('pmw_product_ids', function ($product_ids, $product) {
    $product_ids['custom1'] = 'custom_type_' . $product->get_id();
    $product_ids['custom2'] = 'custom_pinterest_catalog_' . $product->get_sku();
    return $product_ids;
}, 10, 2);
```

2. Ezután rendeld az új egyedi azonosítókat a választott csatornákhoz:

```php
add_filter('pmw_product_id_type_for_google_ads', function () {
    return 'custom1';
});

add_filter('pmw_product_id_type_for_pinterest', function () {
    return 'custom2';
});
```

## Google Analytics termékazonosító-kimenet szűrője

A bővítmény alapból a bejegyzésazonosítót használja a Google Analyticshez. Ez a szűrő cikkszámra (SKU) változtatja. A bejegyzésazonosító alapértelmezett használatának fő okai:

- A bejegyzésazonosító megbízhatóbb. A bolttulajdonos nem biztos, hogy minden terméknek ad cikkszámot, a mező néha üres marad, a Google Analyticsnek viszont küldeni kell valamilyen azonosítót. (Ha a bolttulajdonos nem ad cikkszámot egy termékhez, a bővítmény a bejegyzésazonosítóra esik vissza.)
- A termékek a Google Analyticsben a termék nevével amúgy is azonosíthatók.
- A bejegyzésazonosítót könnyebb keresni a WooCommerce-ben vagy a Google Analyticsben, ezért gyakorlatibb.
- Egyes Google-eszközök (például a Google Ads szkriptek) a termékazonosítókat csupa kisbetűvel adják vissza, akkor is, ha vegyes vagy nagybetűkkel töltötték fel őket. Mivel a bejegyzésazonosító tisztán numerikus, a kis- és nagybetű érzékenysége nem érinti.

```php
add_filter('pmw_product_id_type_for_google_analytics', function () {
    return 'sku';
});
```

## A view_item_list kiváltó szűrője

A bővítmény okos kiváltót használ a `view_item_list` eseményhez. Csak akkor sül el, ha egy termék több mint 1 másodpercig ténylegesen látható a nézetablakban (viewport). Ha a látogató fel-le görget, és többször látja a terméket, a `view_item_list` minden alkalommal elsül (megint csak akkor, ha legalább egy másodpercig látható volt). A következő szűrővel ezt a viselkedést finomhangolhatod. A lusta betöltésű termékeket is támogatja.

> **Megjegyzés:** Ez csak olyan weboldalon működik, ahol a gyorsítótár ki van kapcsolva, vagy a beállítások minden módosítása után kiüríted a gyorsítótárat.

Az elérhető beállítások:

- `testMode`: bekapcsolja a tesztmódot, amely minden olyan terméken átlátszó átfedést mutat, amelyre a `view_item_list` elsült.
- `backgroundColor`: az átfedés háttérszíne, arra az esetre, ha a termékképeken az átfedés nem látszana. Csak a tesztmódban számít.
- `opacity`: alapból az átfedés félig átlátszó. Állítsd jobban megfelelő szintre. Csak a tesztmódban számít.
- `repeat`: alapból a bővítmény újra elküldi a `view_item_list` eseményeket, ha a látogató fel-le görgetve többször látja a terméket. `false` értékkel kikapcsolhatod: ekkor a bővítmény csak egy `view_item_list` eseményt küld, amikor a termék egy oldalon láthatóvá válik.
- `threshold`: megadja, mekkora részének kell láthatónak lennie egy termékkártyának az esemény kiváltásához. `1` értéknél az esemény csak akkor sül el, ha a termék 100%-a látható. Az alapérték `0.8`.
- `timeout`: megadja, mennyi ideig kell láthatónak lennie egy terméknek a `view_item_list` esemény kiváltásához. Az időzítő újraindul, valahányszor a termék elhagyja a nézetablakot. Ezredmásodpercben add meg, az alapérték `1000` (1 másodperc).

```php
add_filter('pmw_view_item_list_trigger_settings', function ($settings) {
    $settings['testMode']        = true;
    $settings['backgroundColor'] = 'green';
    $settings['opacity']         = 0.5;
    $settings['repeat']          = true;
    $settings['threshold']       = 0.8;
    $settings['timeout']         = 1000;
    return $settings;
});
```

A `view_item_list` bemutató mód bekapcsolásának másik egyszerű módja, ha a tesztelendő URL-hez a `vildemomode` paramétert fűzöd (ne felejtsd a `?` jelet). Példa: `https://example.com/shop/?vildemomode`. Ez a módszer bekapcsolt gyorsítótárazású weboldalon is működik, és az alapbeállításokat használja.

## Domainek közötti követés (cross domain linker) a Google-hoz

A Google domain linker funkciója lehetővé teszi, hogy két vagy több, külön domaint használó kapcsolódó oldalt egyként mérjenek. A szűrőnek tömbként kell átadni a linker értékeit. A bővítmény az összes értéket JavaScript formátumú domain linker szkriptként írja ki.

Alappélda több `domains` értékkel: a domains tulajdonságban több szöveges értéket sorolhatsz fel. Ha a domains tulajdonságnak legalább egy értéke van, a `gtag.js` alapból elfogadja a bejövő domainhivatkozásokat. Így ugyanazt a kódrészletet használhatod minden domainen.

```php
add_filter('pmw_google_cross_domain_linker_settings', function () {
    return [
        "domains" => [
            'example.com',
            'example-b.com',
        ],
    ];
});
```

Példa a kimenetre:

```js
gtag('set', 'linker', {
  'domains': ['example.com', 'example-b.com']
});
```

`decorate_forms`: ha vannak olyan űrlapok az oldaladon, amelyek a célhely domainre mutatnak, állítsd a `decorate_forms` tulajdonságot `true` értékre.

```php
add_filter('pmw_google_cross_domain_linker_settings', function () {
    return [
        "domains"        => ['example.com', 'example-b.com'],
        "decorate_forms" => true,
    ];
});
```

`url_position`: ha azt akarod, hogy a linker paraméter az URL-ben a töredék (`#`) után jelenjen meg lekérdezési paraméter (`?`) helyett (például `https://example.com#_gl=1~abcde5~`), állítsd az `url_position` paramétert `fragment` értékre.

```php
add_filter('pmw_google_cross_domain_linker_settings', function () {
    return [
        "domains"        => ['example.com', 'example-b.com'],
        "decorate_forms" => true,
        "url_position"   => 'fragment',
    ];
});
```

`accept_incoming`: miután a látogató olyan oldalra érkezik a célhely domainen, amelynek URL-jében linker paraméter van, a `gtag.js`-t be kell állítani, hogy értelmezze ezt a paramétert. Ha a célhely domain automatikusan kapcsolja a domaineket, alapból elfogadja a linker paramétereket, és nincs szükség további kódra. Ha a célhely domain nincs beállítva automatikus kapcsolásra, utasíthatod a célhelyoldalt, hogy keresse a linker paramétereket: állítsd az `accept_incoming` tulajdonságot `true` értékre.

```php
add_filter('pmw_google_cross_domain_linker_settings', function () {
    return [
        "accept_incoming" => true,
    ];
});
```

## Egyedi márka-taxonómia

Ha a termékek márkaneveit saját termékattribútumban tárolod, ezzel a szűrővel kiírathatod a márkaneveket a pixeleknek. A szűrőnek a márkaattribútum taxonómiájának nevét kell visszaadnia. Általában ez az attribútum slugja `pa_` előtaggal. Ebben a példában ez `pa_custom-brand`. Attól függően, hogyan jött létre a taxonómia, csak a slug is lehet (`custom-brand`). Ha az egyik nem működik, próbáld a másikat.

```php
add_filter('pmw_custom_brand_taxonomy', function () {
    return 'pa_custom-brand';
});
```

## Az adó hozzáadásának kikapcsolása a termékárakhoz

Alapból a Pixel Manager a termékoldalakon a WooCommerce adóbeállításai szerint írja ki az árakat. Egyes témák nem ugyanezt a logikát használják, és a termékárakat adó nélkül jelenítik meg, akkor is, ha a WooCommerce-ben a beállítás az adóval együtt megjelenítés. Ilyenkor a Pixel Manager továbbra is adóval írja ki az árakat. Ha azt akarod, hogy a Pixel Manager is adó nélkül írja ki a termékeket, használd a következő szűrőt.

Ne keverd össze a vásárlást megerősítő oldal beállításával. A bővítmény külön beállítást kínál arra, hogy a megerősítő oldalon az adó és a szállítás benne legyen-e vagy sem. Az egy másik beállítás, és csak a megerősítő oldalon a konverziós pixelek kimenetét érinti.

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

## Facebook-követési kizárási minták hozzáadása

A Facebook nem engedi olyan URL-ek követését, amelyek potenciálisan sértő személyes adatot (PII) tartalmaznak. Ezért a Facebook bevezetett egy ellenőrzést, amely bizonyos feltételek mellett felismeri az ilyen URL-eket, és figyelmeztetést ad az Events Managerben. Egy ilyen URL így nézhet ki: `https://example.com/shop-feature/?firstname=Janos&lastname=Kovacs`.

Alapból a Pixel Manager az összes URL-t követi, mert a WordPress és a WooCommerce általában nem ír személyes adatot az URL-ekbe. A WordPress és a WooCommerce testreszabásai viszont ilyen adatot tehetnek az URL-ekbe, és ilyenkor figyelmeztető üzeneteket kaphatsz a Facebook Events Managerben, amelyek a javításukat kérik.

Erre a célra szűrőt építettünk be, amellyel URL-kizárási mintákat adhatsz hozzá. Ha aktív, a Pixel Manager kizárja a Facebook-követésből az összes olyan URL-t, amely egy vagy több hozzáadott kizárási mintára illeszkedik. A minták reguláris kifejezés szövegek. A háttérben a Pixel Manager JavaScript RegExp konstruktort használ, amelynek ezeket a szöveges mintákat adja.

```php
add_filter('pmw_facebook_tracking_exclusion_patterns', function ($patterns) {
    $patterns[] = 'parcel-panel';
    return array_unique($patterns);
});
```

## IP-címek kizárása az összes követésből (böngésző és szerveroldal)

A `pmw_ip_exclusion_list` egységes IP-kizárási szűrő az adott IP-címekről érkező összes követés blokkolására:

- a böngészőpixelek elsülése (például `fbq()`, `gtag()`, `ttq()`, `pintrk()`) a frontenden elnyomva,
- a böngészőből indított szerver-szerver események (add_to_cart, page_view stb.) küldés előtt blokkolva,
- a szerveroldali vásárlási események (CAPI / S2S vásárlási küldések) a WooCommerce szerveren blokkolva,
- az SSP vásárlási proxy események a SweetCode Cloudnak küldés előtt blokkolva.

Az IP-címek megadhatók hagyományos IP-ként vagy CIDR-tartományként. Az IPv4 és az IPv6 is támogatott.

Frontend-oldali IP-felismerés: ha a kizárási lista nem üres, a Pixel Manager automatikusan bekapcsolja a kliensoldali IP-felismerést (külső szolgáltatásokkal, például a Cloudflare-rel és az ipify-jal) a látogató IP-jének megállapítására, akkor is, ha nincs aktív szerver-szerver integráció. Ez az első oldalbetöltésnél kis késleltetést (kb. 100 ms) jelent, amíg az IP-t lekéri és a munkamenetre gyorsítótárba teszi.

```php
add_filter('pmw_ip_exclusion_list', function ($ip_exclusions) {
    $ip_exclusions[] = '203.0.113.50';
    $ip_exclusions[] = '198.51.100.0/24';
    $ip_exclusions[] = '2001:db8::1';
    $ip_exclusions[] = '2001:db8::/32';
    return array_unique($ip_exclusions);
});
```

A régebbi `pmw_exclude_ips_from_server_2_server_events` szűrő elavult (deprecated), de visszamenőleges kompatibilitásból még működik. Csak a böngészőből indított szerver-szerver eseményeket blokkolta. Térj át a `pmw_ip_exclusion_list` szűrőre, amely a böngészőpixeleket és a szerveroldali vásárlási eseményeket is blokkolja.

### IP-címek kizárása a szerver-szerver eseményekből (elavult)

Ez a szűrő elavult, használd helyette a `pmw_ip_exclusion_list` szűrőt, amely szélesebb körű lefedést ad. A Pixel Manager automatikusan megakadályozza az ismert botok által kiváltott szerver-szerver eseményeket, ami csökkenti a szerver terhelését. Ez a szűrő további IP-címeket és IP-tartományokat enged a kizárási listához adni, normál IP-ként vagy CIDR-tartományként.

```php
add_filter('pmw_exclude_ips_from_server_2_server_events', function ($ip_exclusions) {
    $ip_exclusions[] = '123.123.123.123';
    $ip_exclusions[] = '123.123.123.123/32';
    return array_unique($ip_exclusions);
});
```

## Rendelési tételek szűrője

A rendelés tételeit szűri, mielőtt a Pixel Manager felépíti belőlük a jelentett tételek listáját. Ez az egyetlen hely, ahol egy eladás jelentett tételeiről döntés születik. A szűrő a böngészős vásárlási eseményre és minden szerveroldali vásárlási eseményre (az összes Conversion API-ra és a Google Analytics Measurement Protocolra) is lefut, így egyetlen visszahívás mindet lefedi.

A szűrő a tételeket úgy kapja, ahogy a WooCommerce az `$order->get_items()` hívásból visszaadja, rendelési tétel azonosítóval kulcsolva, valamint a rendelést. (A régi `wpm_order_items` név elavult, de még működik.)

```php
add_filter('pmw_order_items', function ($order_items, $order) {
    foreach ($order_items as $item_id => $item) {
        if (1234 === $item->get_product_id()) {
            unset($order_items[$item_id]);
        }
    }
    return $order_items;
}, 10, 2);
```

A szűrő után két dolog történik, ezzel számolj:

- A csomagok (bundle) és az összetett termékek (composite) gyermekei a tároló termékbe olvadnak. A szűrő által kapott tömb még tartalmazza őket.
- A `pmwDataLayer.order.quantity` a szűrés után megmaradt tételek száma, ezért egy tétel eltávolítása ezt a számot is csökkenti.

> **Figyelem:** Egy tétel eltávolítása a jelentett tételek listáját módosítja, a rendelés értékét nem. Ha az értéknek is egyeznie kell a tételekkel, használd a marketing-konverzióérték szűrőt vagy az analitikai rendelésérték-szűrőket.

## Rendelési díjak szűrője

Ez a szűrő azokat a fizetésfeldolgozói díjakat szabályozza, amelyeket a Pixel Manager levon a marketing-konverzióértékből. Ezek azok a díjak, amelyeket a fizetési szolgáltatód megtart a kifizetésből: a vásárló sosem fizeti meg őket, és nem részei egyetlen WooCommerce-rendelési adatnak sem. A Pixel Manager a **General → Order configuration → Marketing value logic** alatt az Order Subtotal és a Profit Margin beállítás alatt is levonja őket.

Az adóval és a szállítási költséggel ellentétben, amelyek szabványosítottak a WooCommerce-ben, a fizetési módok díjainak nincs szabványos tárolási helyük. Egyes fizetési módok egy külön rendelési meta mezőbe mentik, sokan egyáltalán nem mentik. A Pixel Manager a népszerű fizetési módokhoz beolvassa őket, minden másnál ezzel a szűrővel számolhatod ki magad.

A szűrő minden alkalommal lefut, amikor konverzióértéket számol: a böngészős eseménynél a rendelés-megerősítő oldal betöltésekor, a szerveroldali eseményeknél pedig annak a kérésnek a végén, amelyben a fizetési mód kifizetettnek jelölte a rendelést. Az a díj, amelyet a fizetési mód később tárol, például webhookon át, egyik pillanatban sincs még a rendelésen, ezért az `$order_fees` nem tartalmazza. A díj kiszámítása a fizetési módból és a rendelés végösszegéből a szűrőn belül, ahogy a lenti példa, nem függ attól, hogy a fizetési mód tárolt-e bármit.

> **Ez megváltoztatja, mit jelent a konverziós műveleted.** Ha itt díjat adsz hozzá, az attól a naptól csökkenti a hirdetési platformoknak küldött értéket, az Order Subtotal és a Profit Margin alatt is. Ez lépcsőt okoz a jelentett bevételi idősorban, amelyet a beállításokban semmi nem magyaráz, ezért számolj a törésponttal. Azt is jelenti, hogy ugyanazt a díjat nem vonhatod le még egyszer másutt. A Profit Margin alatt a profitból már le van vonva az `$order_fees`, ezért egy olyan díj, amelyet itt és a saját profitszámításodban is levonsz, kétszer számolódik.

> **Figyelem:** Az `$order_fees` már nem tartalmazza azokat az összegeket, amelyeket a rendeléshez WooCommerce rendelési díjként adtak hozzá (ajándékcsomagolási díj, utánvételi felár vagy foglalórészlet). Az ilyen felár olyan pénz, amelyet a vásárló fizet, nem költség, és a WooCommerce rendelési részösszege sosem tartalmazta, ezért levonása másodszor vonta le, és a termékek értékénél kevesebbet jelentett. Ha az előző viselkedésre építettél, add vissza az `$order->get_total_fees()` értéket a szűrőn belül.

```php
add_filter('pmw_order_fees', function ($order_fees, $order) {
    // Példa: Braintree bankkártyás fizetés, 0,29 + 2,09% díjjal
    if ($order->get_payment_method() == 'braintree_cc') {
        $order_fees += 0.29 + ($order->get_total() * 0.0209);
    }
    return $order_fees;
}, 10, 2);
```

## A rendelés szállítási profitjának szűrője

A Profit Margin számítás a szállítást mindkét oldalon kihagyja: azt, amit a vásárló szállításra fizetett, nem számolja bevételnek, és fuvarozói költséget sem von le. A WooCommerce azt rögzíti, mit számláztál ki szállításra, de sehol nem rögzítődik, mennyit számlázott a fuvarozó neked, ezért a Pixel Manager nem tudja levezetni, és nem von le semmit.

A `pmw_order_shipping_profit` szűrővel megadhatod, mennyit hozott vagy mennyibe került a szállítás egy rendelésen. Amit visszaadsz, azt a bővítmény változtatás nélkül hozzáadja a profithoz.

```php
add_filter('pmw_order_shipping_profit', function ($shipping_profit, $order) {
    $courier_cost = 28.81;   // a fuvarozó díja, nettó
    return (float) $order->get_shipping_total()
         - (float) $order->get_total_shipping_refunded()
         - $courier_cost;
}, 10, 2);
```

Három dologra figyelj:

- **Nettó értékekkel dolgozz.** A számítás minden más értéke adó nélküli, és a `get_shipping_total()` is nettó. Az adóval együtt megadott fuvarozói díj minden rendelésnél az adó összegével téves, és a hiba éppen elég kicsi és állandó ahhoz, hogy észrevétlen maradjon.
- **Vond le a visszatérített szállítást.** A profitból semmi más nem vonja le, ezért egy részben visszatérített rendelésnél a profit túlbecsült.
- **Az ingyenes szállítás is kerül pénzbe.** Ha a fuvarozói költséget abból határozod meg, amit a vásárlónak számláztál, az ingyenes szállítási küszöb fölötti rendelésnél egyáltalán nem vonódik le költség, pedig éppen ott fáj a legjobban. A költséget a szállítási módból döntsd el, ne az összegből.

A szűrő csak a profitmargin-számításon belül fut. Ezért csak akkor érinti a konverzióértéket, ha a **Marketing value logic** értéke **Profit margin**, és az Order subtotal vagy Order total logikát soha nem érinti. Minden mást is érint, ami a profiton épül, a `Profit_Margin::get_order_profit_margin()` saját hívásaidat is.

## Profit Margin API

A `\SweetCode\Pixel_Manager\Profit_Margin` osztály két metódusa támogatott a bolti kódból való használatra. Mindkettő `WC_Order` objektumot vár.

| Metódus | Mit ad vissza |
|---|---|
| `Profit_Margin::get_order_profit_margin($order)` | a rendelés profitmarginja, a Profit Margin beállításnál leírtak szerint |
| `Profit_Margin::order_has_complete_cogs($order)` | `true`, ha a rendelés minden termékéhez ismert az önköltség (COGS) |

Az `order_has_complete_cogs()` azért létezik, mert az önköltség nélküli termék nulla költséggel számolódik, ami a termék teljes bevételét profitként jelenti, a margin pedig puszta szám, amely ezt nem tudja elárulni. Mielőtt egy profitszám alapján cselekszel, kérdezd meg ezt, és ne írd újra a bővítmény költségkeresését a saját kódodban.

```php
add_filter('pmw_custom_order_parameters', function ($custom_parameters, $order) {
    if (!class_exists('\SweetCode\Pixel_Manager\Profit_Margin')) {
        return $custom_parameters;
    }

    // Ne jelents profitot, ha valamelyik termék önköltsége hiányzik
    if (!\SweetCode\Pixel_Manager\Profit_Margin::order_has_complete_cogs($order)) {
        return $custom_parameters;
    }

    $custom_parameters['profit'] = round(
        (float) \SweetCode\Pixel_Manager\Profit_Margin::get_order_profit_margin($order),
        2
    );
    return $custom_parameters;
}, 10, 2);
```

Az osztály neve, a névtere és ez a két aláírás marad a helyén. Minden más az osztályon belső, és értesítés nélkül változhat. Tartsd meg a `class_exists()` ellenőrzést: az osztály nincs betöltve, ha a WooCommerce inaktív. Mindkét metódus kihagyja azt a rendelési tételt, amelynek a terméke már nem létezik, ugyanúgy, ahogy maga a számítás. Az az olyan rendelés, amelynek az összes terméke törölve lett, ezért `true` értéket és nulla marginnal jelentkezik, ami abban az értelemben helyes, hogy nincs már mit árazni, de nem jelentésre érdemes profitszám.

## Az osztott fizetések rendelésszerepe

A foglaló- és részfizetési bővítmények egy eladást több WooCommerce-rendelésre osztanak szét. A Pixel Manager minden eladást egyszer, teljes egészében jelent, a foglaló kifizetésének pillanatában, azon a rendelésen, amely az eladást képviseli. Ez dobozból kivéve működik a Deposits & Partial Payments for WooCommerce (Acowebs, ingyenes és Pro) és a WooCommerce Deposits (Webtomizer) bővítményekkel.

Ha más foglalóbővítményt használsz, a `pmw_split_payment_order_role` szűrő megmondja a Pixel Managernek, milyen szerepet tölt be egy rendelés:

- `standard`: szokásos rendelés, normálisan követve.
- `payment_leg`: a rendelés csak egy részletet gyűjt be egy olyan eladásért, amely a szülőrendelésén él. A vásárlást a szülőrendelés termékeivel és értékével jelenti, a kettőzésmegelőzési jelölést a szülőre írja, így az ugyanahhoz az eladáshoz tartozó többi részlet néma marad. A rendelés saját szerveroldali vásárlási eseményeit kihagyja.
- `follow_up_invoice`: a rendelés egy olyan eladás egy részét számlázza újra, amelyet a szülőrendelés leadásakor már jelentett. Soha nem jelent vásárlást, sem a böngészőben, sem a szerveren.

```php
add_filter('pmw_split_payment_order_role', function ($role, $order) {
    if (
        $order instanceof WC_Order
        && 'my_deposits_plugin' === $order->get_created_via()
        && $order->get_parent_id() > 0
    ) {
        return 'payment_leg';
    }
    return $role;
}, 10, 2);
```

A `payment_leg` rendeléseknél a szülőnek olyan szokásos bolti rendelésnek kell lennie, amely a termékek tételeit hordozza, különben a Pixel Manager a szokásos kezelésre esik vissza.

## A követési pontossági elemzésben elemzendő rendelések legnagyobb száma

A követési pontossági elemzés túl sokáig tarthat. Ez különösen igaz, ha lassú a szervered, rövid a PHP időkorlátod, vagy eldugult az Action Scheduler várólistája. A következő szűrő beállítja az elemzendő rendelések legnagyobb számát. Először 100 rendeléssel próbáld, és ha az működik, emelheted. Az elemzés éjszaka fut, ezért az eredményre a következő napig várnod kell. Ha ez nem segít, valószínűleg az Action Scheduler várólistát kell megjavítanod.

```php
add_filter('pmw_tracking_accuracy_analysis_max_order_amount', function () {
    return 100;
});
```

## Outbrain és Taboola eseménynév-leképezés módosítása

Ha korábban már dolgoztál az Outbrainnel vagy a Taboolával, és a Pixel Manager alapértelmezettjeitől eltérő eseménynevekkel, az alábbi szűrőkkel módosíthatod az eseménynév-leképezést.

```php
add_filter('pmw_outbrain_event_name_mapping', function ($mapping) {
    $mapping['purchase'] = 'purchase';
    return $mapping;
});

add_filter('pmw_taboola_event_name_mapping', function ($mapping) {
    $mapping['purchase'] = 'purchase';
    return $mapping;
});
```

## Egyedi paraméterek a Google Analytics vásárlási eseményéhez

A Pixel Manager automatikusan különféle szabványos paramétereket küld a Google Analyticsnek. Az egyedi rendelési paraméter szűrőkkel további paramétereket adhatsz a Google Analytics vásárlási eseményéhez rendelés- és rendelésitétel-szinten.

### Rendelésszintű egyedi paraméterek

Felhasználási esetek:

- vásárlói szegmentálás a rendelés összértéke vagy a rendelések száma alapján
- a vásárló helyén a vásárláskor uralkodó időjárási körülmények
- várható szállítási idő

```php
add_filter('pmw_custom_order_parameters', function ($custom_parameters, $order) {
    $custom_parameters['custom_parameter_a'] = 'custom_value_a';
    $custom_parameters['custom_parameter_b'] = 'custom_value_b';
    return $custom_parameters;
}, 10, 2);
```

### Rendelésitétel-szintű egyedi paraméterek

Felhasználási esetek:

- az adott termék beszállítója az adott rendelésen
- a termék testreszabása
- ajándékcsomagolási opció

```php
add_filter('pmw_custom_order_item_parameters', function ($custom_parameters, $order_item, $order) {
    $custom_parameters['custom_parameter_1'] = 'custom_value_1';
    $custom_parameters['custom_parameter_2'] = 'custom_value_2';
    return $custom_parameters;
}, 10, 3);
```

### Az egyedi Google Analytics paraméterek szűrőinek használata

1. Add hozzá az egyedi paramétereket a Google Analytics vásárlási eseményéhez a fenti szűrők egyikével vagy mindkettővel.
2. Állítsd be az egyedi paramétereket a Google Analyticsben egyedi dimenzióként vagy metrikaként (egyedi esemény-hatókörű, illetve egyedi tétel-hatókörű dimenziók és metrikák).
3. Várj egy napot, hogy a Google Analytics feldolgozza az adatot.
4. Ezután használhatod az egyedi paramétereket a Google Analytics jelentéseiben.

## A jelentések által figyelembe vett rendelési státuszok

Azok a rendelési státuszok, amelyek valós eladásnak számítanak: a WooCommerce kifizetett státuszai, plusz a `completed`, `processing`, `on-hold` és `pending`. A lista dönti el, mely rendeléseket olvassa az élettartam-érték számítás és az önköltség-lefedettség vizsgálata.

```php
add_filter('pmw_active_order_statuses', function ($statuses) {
    $statuses[] = 'awaiting-payment';
    return array_diff($statuses, ['pending']);
});
```

A státuszokat `wc-` előtag nélkül add vissza. A Pixel Manager hozzáadja ott, ahol az adatbázis-lekérdezésekhez szükség van rá.

## Tesztrendelések kizárása az élettartam-érték számításból

Az élettartam-érték számítás kihagyja azokat a rendeléseket, amelyeket a szűrő által visszaadott e-mail-címek egyikével adtak le, így a saját tesztrendeléseid nem jelennek meg visszatérő vásárlóként élettartam-értékkel. A szűrő a Pro változatban érhető el.

```php
add_filter('pmw_get_test_email_addresses', function ($emails) {
    $emails[] = 'teszt1@example.com';
    $emails[] = 'teszt2@example.com';
    return $emails;
});
```

Az összehasonlítás a rendelés számlázási e-mail-címével történik, és pontos egyezést kér, ezért sorold fel az összes címet, amellyel tényleg tesztelsz. A szűrő mind a rendelés beérkezésekor futó számításra, mind a meglévő rendelések kötegelt újraszámolására érvényes.

## Az önköltség-lefedettség vizsgálatának kikapcsolása

A Pixel Manager megvizsgálja a friss rendeléseket, találhat-e olyan terméket, amelynek nincs önköltsége (COGS), hogy meg tudja mondani, miért tűnik rossznak a profitmargin. Ezzel a szűrővel kikapcsolhatod a vizsgálatot (Pro).

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

A vizsgálat az adminban fut, tranziensbe gyorsítótárazott, és a frontendet soha nem érinti. Kikapcsolása akkor éri meg, ha nagyon nagy a rendelési táblád, és a gyorsítótárazott vizsgálat is észrevehető. A profitmargin maga tovább működik, csak az önköltség nélküli termékekről szóló figyelmeztetést veszíted el.

## Előre jelzett vásárlói élettartam-érték a Metának

A Meta elfogad egy `predicted_ltv` értéket a Purchase eseménnyel (az Events Managerben pLTV néven látszik, értékoptimalizálásra használja). A Pixel Manager eltárolja minden vásárló korábbi élettartam-értékét, de az előrejelzés olyan jóslat, amelyet csak a bolt tud megtenni, ezért a `pmw_predicted_customer_ltv` szűrőn át adhatod meg. Az érték a böngészős Purchase eseménybe és a Conversions API Purchase eseménybe is bekerül (Pro).

Pozitív számot adj vissza a küldéshez. Minden más, az alapértelmezett `null` is, kihagyja a mezőt, így a Meta soha nem kap 0 értéket. A harmadik argumentum a vásárló korábbi marketing-élettartamértéke ezt a rendelést is beleértve, vagy `null`, ha a rendelésszintű LTV nincs bekapcsolva.

```php
add_filter('pmw_predicted_customer_ltv', function ($predicted_ltv, $order, $historical_ltv) {
    if ($historical_ltv === null) {
        return $predicted_ltv;
    }
    // Példa: a korábbi érték plusz 250
    return $historical_ltv + 250;
}, 10, 3);
```

## A Pixel Manager beállításainak szűrése

Időnként olyan különleges beállításra vagy igényre lehet szükséged, amelyet a szokásos beállítások nem tudnak teljesíteni. Ilyenkor az alábbi szűrővel módosíthatod a Pixel Manager beállításait, mielőtt feldolgozná őket. A beállítástömb szerkezete a későbbi kiadásokban változhat, ezért óvatosan használd.

```php
add_filter('pmw_options', function ($options) {
    $host = $_SERVER['HTTP_HOST'];

    if (preg_match("/.*example.nl/", $host)) {
        $options['google']['analytics']['ga4']['measurement_id'] = 'abc';
    } elseif (preg_match("/.*example.us/", $host)) {
        $options['google']['analytics']['ga4']['measurement_id'] = 'def';
    }

    return $options;
});
```

További példák a [Tippek és trükkök](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-tippek-es-trukkok/) fejezetben vannak.
