# Tippek és trükkök

> Kódpéldák és minták: egyedi események, Google Ads konverziók, Meta egyedi események, országonkénti pixelazonosítók, változatos termékek, GA4 oldalcím és WPML.

Az ezen az oldalon található jQuery-s eseményfigyelők csak akkor működnek, ha a jQuery-t nem helyezték át a lábrészbe, és nem késlelteti JavaScript-optimalizáló. Ha ez történt, használd az alábbi kódot, amely aszinkron módon (az oldalbetöltést nem blokkolva) megvárja a jQuery betöltését, és csak utána csatolja az eseményfigyelőket.

Az itt látható példák közül sok a Pixel Manager `pmw:*` eseményeire épül. Ezek mindegyikét, az adatcsomagokkal és az események saját kiváltásával együtt, a [JavaScript-események](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-javascript-esemenyek/) fejezet írja le.

## Ha magad hívod a `gtag()` függvényt

A Pixel Manager maga tölti be a Google-címkét, és a JavaScriptet halasztó vagy késleltető boltokon ezt az oldal saját beágyazott szkriptjei után teszi. Az a kódod, amely várakozás nélkül hívja a `gtag()` függvényt, ezért nem sül el, és ezt megbízhatóan, nem alkalmanként teszi, mert az adatréteget a PHP jóval a követőcsomag lefutása előtt kiírja.

Két védelem megoldja, ugyanaz a kettő, amelyet a Pixel Manager a saját Google-konverzióira alkalmaz:

- `pmw.googleConfigConditionsMet({type: "marketing"})` (vagy `"statistics"` csak elemzési eseményhez) a hozzájáruláshoz,
- `pmw.gtagLoaded().then(…)` megvárja, amíg a Google-címke tényleg ott van.

Mindkettőnek a [parancssor](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-command-queue/) egy parancsában a helye, mert az garantálja, hogy a `pmw` egyáltalán létezik. Ne a `pmw:ready` eseményt várd helyette: az nem hordoz adatcsomagot és sosem játszódik vissza, ezért az a kódrészlet, amely az elsülése után regisztrál, semmit nem hall.

Az újabb változatokon a `pmw.trackCustomGoogleAdsConversion()` mindkét védelmet magától alkalmazza. Minden Google Ads konverzióra ezt részesítsd előnyben a kézzel írt `gtag()` hívással szemben.

## Eseményfigyelők mindig a jQuery betöltése után

Egyes boltok JavaScript-optimalizálóval késleltetik vagy lustán töltik a jQuery-t és a követőszkripteket, a Pixel Manager for WooCommerce-et is. A Pixel Manager maga megoldja ezt. Ha viszont a saját eseményeidet akarod a Pixel Manager API-jával követni, a késleltetett és lustán töltött szkriptek kezelése kihívás, mert a jQuery-be csak a betöltése után lehet kapcsolódni.

Az alábbi kód megvárja a jQuery betöltését, utána bármelyik elemre eseményfigyelőt csatol, és minden kiváltáskor lefuttatja a kódot. Előnye, hogy nem blokkolja az oldalbetöltés más végrehajtását, mert aszinkron fut.

```js
new Promise((resolve) => {
    (function waitForjQuery() {
        if (window.jQuery) return resolve()
        setTimeout(waitForjQuery, 100)
    })()
}).then(() => {
    jQuery(document).on("SOME_EVENT", function () {
        // a te kódod
    })
})
```

## A terméknév hozzáadása a kosárba tételi eseményekhez címkével

Szeretnéd valós időben látni, mely termékeket teszik kosárba? Ez a kód a termék nevét eseménycímkeként elküldi a Google Analyticsnek. Tedd a gyermektéma `functions.php` fájljába:

```php
add_action('wp_footer', function () {
    ?>
    <script>
        window._pmwq = window._pmwq || [];
        window._pmwq.push(function () {
            pmw.bus.on("pmw:add-to-cart", function (product) {
                if (!pmw.googleConfigConditionsMet({type: "statistics"})) return;
                pmw.gtagLoaded().then(function () {
                    gtag("event", "add_to_cart", {
                        event_category: "add_to_cart",
                        event_label   : product.name,
                    })
                }).catch(function () {
                    // a Google-címke nem töltődött be
                })
            })
        })
    </script>
    <?php
});
```

## Eseményfigyelő csatolása a weboldal bármelyik elemére

Az alábbi példával a weboldal bármelyik elemére eseményfigyelőt csatolhatsz, és követési eseményt válthatsz ki. A példában egy kapcsolatfelvételi űrlap gombjára csatolunk figyelőt, és minden űrlapküldő kattintásra Google Ads konverziót váltunk ki.

> **Megjegyzés:** A példa csak a módszer illusztrálására szolgál. Az űrlapbeküldések követéséhez azt javasoljuk, hogy csak a sikeres beküldéseket kövesd. Ezt egyszerűen megteheted úgy, hogy a sikeres beküldés után átirányítást állítasz be egy megköszönő oldalra, és arra az oldalra követési [shortcode-ot](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-shortcode-ok/) teszel.

```php
add_action('wp_footer', function () { ?>
    <script>
        window._pmwq = window._pmwq || [];
        window._pmwq.push(function () {

            jQuery(document).on("click", ".contact-form-button", function () {

                if (!pmw.googleConfigConditionsMet({type: "marketing"})) return;

                pmw.gtagLoaded().then(function () {
                    gtag("event", "conversion", {
                        send_to: "AW-123456789/AABBCCDDEEFFGG",
                        value: 0.0,
                        currency: "HUF",
                        transaction_id: "",
                    });
                }).catch(function () {
                    // a Google-címke nem töltődött be
                });
            })
        })
    </script>
<?php });
```

## Egyedi események követése a Metában (Facebook)

Ha valamiért egyedi eseményeket akarsz követni a Metában, a Pixel Managerrel ez megoldható.

A Pixel Manager a `pmw.trackCustomFacebookEvent("EGYEDI_ESEMENY_NEVE", NEM_KOTELEZO_EGYEDI_ADATOBJEKTUM)` függvényt kínálja. Futtatáskor az `EGYEDI_ESEMENY_NEVE` nevű eseményt elküldi a Metának, a nem kötelező egyedi adatobjektummal együtt, ha megadtad. Ha a Pro változatban a Meta CAPI be van kapcsolva, a Meta CAPI-n át is elküldi.

Például követhetsz `ViewCategory` eseményeket, amelyek nem tartoznak a Meta szabványos eseményei közé. A Pixel Manager `pmw:view-category` eseményt bocsát ki, amikor a látogató egy kategóriaoldalra lép. Ezt az eseményt így követheted a Metában a `functions.php` fájlban:

```php
add_action('wp_footer', function () {
    ?>
    <script>
        jQuery(document).on("pmw:view-category", function () {
            pmw.trackCustomFacebookEvent("ViewCategory", NEM_KOTELEZO_EGYEDI_ADATOBJEKTUM)
        })
    </script>
    <?php
});
```

### Az egyedi Meta-események korlátai

- **Szüksége van a böngészőpixelre.** A függvény csak akkor fut, ha a Meta-pixel be van töltve és elsülhet, vagyis a látogató marketing-hozzájárulása után. Ha a böngészőben nem sülhet el, a Conversions API-nak sem küld semmit.
- **Minden hívás önálló esemény.** Minden hívás saját eseményazonosítót generál, amelyet a böngészős esemény és a Conversions API másolata megoszt, így a Meta ezt a párt kettőzésmentesíti. Két hívás a Metának két külön esemény, akkor is, ha a nevük és adataik azonosak.
- **A speciális egyeztetés (advanced matching) eseményenként nem kapcsolható ki.** A böngészős esemény azokat az egyeztetési adatokat használja, amelyekkel a pixel inicializálódott, a Conversions API másolata pedig ugyanazokat az ügyféladatokat hordozza, mint minden más esemény.
- **A JavaScript-adatcsomag-szűrők nem futnak le.** Az egyedi események kihagyják az eseményfeldolgozót, ezért az olyan szűrők, mint a `pmw_pixel_data_facebook`, sosem látják őket. Add át az egyedi adatobjektumban mindent, amire szükséged van. A Conversions API-másolat továbbra is átmegy a [szerveroldali szűrőkön](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-esemenyszurok/).

## A PixelYourSite haladó marketingeseményeinek utánzása

A PixelYourSite haladó marketingeseményeket kínál a WooCommerce-hez: `FirstTimeBuyer`, `ReturningCustomer`, `FrequentShopper`, `VIPClient` és `BigWhale`. Sok bolttulajdonos ezekkel az eseményekkel épít vásárlói szegmenseket, közönségeket és hasonmás közönségeket a Metában (Facebook).

Az, aki a PixelYourSite-ról a Pixel Managerre vált, ezeket az eseményeket egyetlen kódrészlettel utánozhatja, amely a `pmw.trackCustomFacebookEvent()` függvényt a `pmw:purchase` eseménnyel és a [parancssorral](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-command-queue/) kombinálja.

A kód a vásárlást megerősítő oldalon kiszámolja a vásárló tranzakcióinak számát, az átlagos rendelési értéket (AOV) és az élettartam-értéket (LTV), majd minden szegmenseseményt elsüt, amelyre a vásárló jogosult. Tedd a gyermektéma `functions.php` fájljába:

```php
add_action('wp_footer', function () {
    if (!is_order_received_page()) {
        return;
    }

    global $wp;
    $order_id = absint($wp->query_vars['order-received'] ?? 0);
    if (!$order_id) {
        return;
    }

    $order = wc_get_order($order_id);
    if (!$order) {
        return;
    }

    $customer_email = $order->get_billing_email();
    if (!$customer_email) {
        return;
    }

    // Küszöbértékek: igazítsd a bolthoz
    $frequent_shopper_min_tx = 2;
    $vip_min_tx              = 2;
    $vip_min_aov             = 200;
    $big_whale_min_ltv       = 5000;

    // A vásárló korábbi rendeléseinek lekérdezése
    $customer_orders = wc_get_orders([
        'billing_email' => $customer_email,
        'status'        => ['wc-processing', 'wc-completed'],
        'limit'         => -1,
    ]);

    $transaction_count = count($customer_orders);
    $ltv               = 0;
    foreach ($customer_orders as $customer_order) {
        $ltv += (float) $customer_order->get_total();
    }
    $aov = $transaction_count > 0 ? $ltv / $transaction_count : 0;

    $is_first_time_buyer = $transaction_count <= 1;
    $is_returning        = $transaction_count > 1;
    $is_frequent_shopper = $transaction_count >= $frequent_shopper_min_tx;
    $is_vip_client       = $transaction_count >= $vip_min_tx && $aov >= $vip_min_aov;
    $is_big_whale        = $ltv >= $big_whale_min_ltv;
    ?>
    <script>
        window._pmwq = window._pmwq || [];
        window._pmwq.push(function () {
            jQuery(document).on('pmw:purchase', function () {
                var custom_data = {
                    transaction_count: <?php echo (int) $transaction_count; ?>,
                    aov              : <?php echo round($aov, 2); ?>,
                    ltv              : <?php echo round($ltv, 2); ?>
                };
                <?php if ($is_first_time_buyer) : ?>
                pmw.trackCustomFacebookEvent("FirstTimeBuyer", custom_data);
                <?php endif; ?>
                <?php if ($is_returning) : ?>
                pmw.trackCustomFacebookEvent("ReturningCustomer", custom_data);
                <?php endif; ?>
                <?php if ($is_frequent_shopper) : ?>
                pmw.trackCustomFacebookEvent("FrequentShopper", custom_data);
                <?php endif; ?>
                <?php if ($is_vip_client) : ?>
                pmw.trackCustomFacebookEvent("VIPClient", custom_data);
                <?php endif; ?>
                <?php if ($is_big_whale) : ?>
                pmw.trackCustomFacebookEvent("BigWhale", custom_data);
                <?php endif; ?>
            });
        });
    </script>
    <?php
});
```

Néhány megjegyzés:

- Minden esemény egyedi adatként hordozza a `transaction_count`, `aov` és `ltv` értékeket, így ezeket a Meta közönségszabályaiban is használhatod (például `ltv > 10000`).
- Az események a `pmw:purchase` eseményre kapcsolódnak, amely tiszteletben tartja a Pixel Manager rendelés-kettőzésmegelőzését. A megerősítő oldal újratöltése nem sütti el újra a szegmenseseményeket.
- Ha a Meta (Facebook) CAPI be van kapcsolva (Pro), a `pmw.trackCustomFacebookEvent()` az eseményeket automatikusan a CAPI-n át is elküldi.
- A Metában a közönségek ezentúl dinamikusan töltődnek fel, ugyanúgy, mint a PixelYourSite-tal. A korábbi vásárlásokat pixelesemények nem tudják visszamenőleg feltölteni.
- A vásárló rendeléstörténetét a megerősítő oldal betöltésénként egyszer kérdezi le a kód, ami gyakorlatilag minden boltban elhanyagolható terhelés.

## Pixelazonosítók és más beállítások országonkénti domainenként

Előfordul, hogy egy bolttulajdonos ugyanazt a bolti példányt több országdomainen futtatja (például example.com, example.nl, example.br), és a fizetett hirdetési forgalmat a különböző domainekre különböző fiókokból indítja. A Pixel Manager felülete viszont csak egy pixelazonosító beállítását engedi.

Ilyenkor a `pmw_options` szűrővel a domain szerint módosíthatod a pixelazonosítókat. A szűrő a Pixel Manager beállításait módosíthatja, mielőtt feldolgozná őket. Az `$options` tömb a Pixel Manager beállításainak mindegyikét tartalmazza. Az `error_log` függvénnyel kiírathatod és megnézheted az `$options` tömb szerkezetét, hogy kiderüljön, hogyan épülnek fel a többi pixel beállításai.

> **Figyelem:** Az `$options` tömb szerkezete a későbbi kiadásokban változhat. Ez nagyon ritkán történik meg, de megtörténhet. Kövesd a változásnaplókat, hogy értesülj az újdonságokról és a törő változásokról.

```php
add_filter('pmw_options', function ($options) {

    $host = $_SERVER['HTTP_HOST'];

    if (preg_match("/.*example.nl/", $host)) {
        $options['google']['analytics']['ga4']['measurement_id'] = 'abc';
        $options['google']['ads']['conversion_id']               = '1234567890';
        $options['google']['ads']['conversion_label']            = 'abc123';
    } elseif (preg_match("/.*example.fr/", $host)) {
        $options['google']['analytics']['ga4']['measurement_id'] = 'xyz';
        $options['google']['ads']['conversion_id']               = '1122334455';
        $options['google']['ads']['conversion_label']            = 'def123';
    } elseif (preg_match("/.*example.us/", $host)) {
        $options['google']['analytics']['ga4']['measurement_id'] = 'def';
        $options['google']['ads']['conversion_id']               = '9988776655';
        $options['google']['ads']['conversion_label']            = 'ghi123';
    }

    return $options;
});
```

## A view_item esemény elsütése változatos termékeknél, ha nincs előre kiválasztott változat

Alapból, ha a **Variations Output** (a változatok külön tételként kiírása) be van kapcsolva, a Pixel Manager nem sütti el a `view_item` eseményt egy változatos termék oldalán, amíg nincs változat kiválasztva. Ennek oka, hogy a dinamikus remarketing eseményeknél, mint a `view_item`, az eseménnyel küldött termékadatnak egyeznie kell a feltöltött katalógus egy termékével. Ha a változatok vannak feltöltve a katalógusba, a szülőtermék nincs. Ha tehát nincs előre kiválasztott változat a termékoldalon, a Pixel Manager nem tudhatja megbízhatóan, melyik változat azonosítóját küldje. A helyes változatazonosító küldése sokkal pontosabb hirdetéscsoportokat is eredményez.

### Ajánlott: használd a Variations Output beállítást

Ha elfogadható, hogy a változatos termékeknél a szülőtermék azonosítóját jelented, nincs szükség egyedi kódra. Kapcsold ki a Pixel Managerben a **General → Product data** részen az **Output product variations as separate items** kapcsolót. Kikapcsolva a Pixel Manager a változatos termékeknél oldalbetöltéskor magától elsüti a `view_item` eseményt a szülőtermék adataival, akkor is, ha nincs kiválasztott változat.

Ne feledd: ez a beállítás globális. Az összes termékjelentést (remarketing, `add_to_cart`, `purchase` és így tovább) a változatszintű azonosítókról a szülőtermék-azonosítókra váltja. Csak akkor kapcsold ki, ha a termékfeededet szülőtermékekre építetted.

### Alternatíva: hagyd bekapcsolva a Variations Output beállítást, és sütsd el a szülő view_item eseményét betöltéskor

Ha meg akarod tartani a változatszintű jelentést, de oldalbetöltéskor a szülőtermékre is el akarsz sütni egy `view_item` eseményt, használd a `pmw_fire_parent_view_item_on_variable_products` szűrőt (részletek: [Szerveroldali szűrők](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-php-szurok-szerveroldal/)):

```php
add_filter('pmw_fire_parent_view_item_on_variable_products', '__return_true');
```

A változat saját `view_item` eseménye továbbra is elsül, amint a vásárló kiválaszt egy változatot. A szűrő megkapja a termékazonosítót, így termékenként is dönthetsz.

#### JavaScripttel

Ha a szűrő nem áll rendelkezésre, vagy a döntés olyasmitől függ, amit csak a böngésző tud, ugyanez kódrészlettel is megoldható.

> **Vigyázat:** Ehhez ne használd a `hide_variation` eseményt. Az csak akkor sül el, amikor a vásárló egy már kiválasztott változatot töröl, nem friss oldalbetöltéskor, amikor semmi nincs kiválasztva. Az alábbi kódrészlet a Pixel Manager saját `pmwLoad` eseményére kapcsolódik, amely oldalbetöltéskor megbízhatóan elsül.

```php
add_action('wp_footer', function () {
    if (!function_exists('is_product') || !is_product()) {
        return;
    }
    ?>
    <script>
        window._pmwq = window._pmwq || [];
        window._pmwq.push(function () {
            pmw.bus.on("pmwLoad", function () {
                try {
                    if (pmwDataLayer?.shop?.page_type !== "product") return;
                    if (pmwDataLayer?.shop?.product_type !== "variable") return;

                    var parentId = pmw.getMainProductIdFromProductPage();
                    if (!parentId) return;

                    pmw.triggerViewItemEventPrep(parentId);
                } catch (e) {
                    console.error(e);
                }
            });
        });
    </script>
    <?php
});
```

Bekapcsolt Variations Outputnál ez a szülőtermékre oldalbetöltéskor `view_item` eseményt süt el, és a Pixel Manager továbbra is elsüt egy külön `view_item` eseményt a konkrét változatra, amint a vásárló kiválaszt egyet.

A régebbi változatokban ez a kódrészlet `jQuery(document).on("pmwLoad", ...)` alakot használt `_pmwq` és `pmw.bus.on()` nélkül. Ha még a jQuery-s változatot futtatod, cseréld le a fenti szűrőre vagy erre a kódrészletre. Néhány régebbi kiadásban a jQuery-s változat oldalbetöltésenként kétszer futott, és végtelen ciklusba küldhette a böngészőt, amely `RangeError: Maximum call stack size exceeded` hibával végződik, lefagyasztja az oldalt, és ezernyi kérést indít. Ezt a bővítmény jQuery-kompatibilitási rétegének hibája okozta, és ki van javítva. A `pmw.bus.on()` egyik változaton sem érintett, a `_pmwq` pedig a kódrészletet függetlenné teszi a szkriptek betöltési sorrendjétől. A `pmw.bus` az újabb változatokon érhető el: régebbieken használd a `jQuery(document).on("pmwLoad", ...)` alakot.

## A page_title és a page_location módosítása a GA4-ben

Az alábbi kódpéldák a GA4 dokumentációja szerint módosítják a `page_title` és `page_location` értékét a GA4-ben. Az első példa kikapcsolja az alapértelmezett `page_view` eseményt:

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

A második példa egyedi `page_view` eseményt küld egyedi `page_title` és `page_location` paraméterekkel. Cseréld le a `PAGE_TITLE` és `PAGE_LOCATION` értékeket a sajátjaidra.

```php
add_action('wp_footer', function () {
    ?>
    <script>
        gtag('event', 'page_view', {
            page_title: 'PAGE_TITLE',
            page_location: 'PAGE_LOCATION'
        });
    </script>
    <?php
});
```

## Egyedi Google Ads konverziók követése

A `pmw.trackCustomGoogleAdsConversion(sendTo, data)` egy saját konverziós műveletre küld konverziót. Ez a `pmw.trackCustomFacebookEvent()` Google-megfelelője, és ugyanazt a két védelmet alkalmazza, amelyen a Pixel Manager saját Google Ads konverziói átmennek: a marketing-hozzájárulási kaput és a várakozást a Google-címke tényleges betöltésére. Régebbi változatokon a `gtag()` hívást a két védelemmel együtt kézzel kell megírni, ahogy a lentebbi példák teszik.

| Argumentum | Tartalom |
|---|---|
| `sendTo` | a konverzió azonosítója, `"AW-KONVERZIO_ID/KONVERZIO_CIMKE"`. Mindkét fele a Google Ads konverziós művelet címketelepítési útmutatójában van. |
| `data` | Nem kötelező. A konverzió bármely eseményparamétere: `value`, `currency`, `transaction_id` és így tovább. |

Ígéretet (promise) ad vissza, amely akkor teljesül, amikor a konverziót elküldte, és `undefined` értéket, ha valamelyik védelem elutasította, ezért a láncolás előtt ellenőrizd a null értéket.

Példa: egy rendelés profitjának jelentése egy második Google Ads konverziós műveletnek, a Pixel Manager által elsütött bevételi művelet mellett:

```php
add_action('wp_head', function () {
    ?>
    <script>
        window._pmwq = window._pmwq || [];
        window._pmwq.push(function () {
            pmw.bus.on("pmw:event:purchase", function () {
                var order = window.pmwDataLayer && pmwDataLayer.order;
                if (!order || !order.custom_parameters) return;

                var profit = parseFloat(order.custom_parameters.profit);
                if (!isFinite(profit)) return;

                pmw.trackCustomGoogleAdsConversion("AW-KONVERZIO_ID/KONVERZIO_CIMKE", {
                    value         : Math.max(0, profit),
                    currency      : order.currency,
                    transaction_id: String(order.number)
                });
            });
        });
    </script>
    <?php
});
```

Négy részlet számít ebben a kódrészletben, és mindegyik elvesztett már konverziót egy boltnak:

- **Minden oldalon írd ki,** a `wp_head` hookkal, oldalfeltétel nélkül. A vásárlási esemény a kapu, és az [Automatic Conversion Recovery](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/funkciok-acr/) egy közönséges bolti oldalon is elsüti, amikor a vásárló egy soha nem követett rendeléssel tér vissza. A csak a megerősítő oldalra szűkített kódrészlet éppen ezeket a rendeléseket hagyja ki.
- **A `pmw:event:purchase` eseményre akaszd,** ne a `pmw:ready` eseményre és ne a `window.gtag` ellenőrzésére. Az az esemény visszajátszódik, így a késői regisztráció biztonságos.
- **A `transaction_id` az `order.number` legyen,** amit a Pixel Manager saját konverziója is küld, így mindkét művelet ugyanazon az azonosítón kulcsol.
- **Az értéket nullánál alulról korlátozd.** A profit negatív lehet egy erősen visszatérített rendelésnél, a hirdetési platformok pedig vagy elutasítják, vagy félreértik a negatív értéket.

> **A kérések számolása nem a konverziók számolása.** Egy konverzió több Google-végponton szóródik szét, ezért egyetlen `gtag()` hívás több kérést is előállít a Hálózat panelen. A darabszámot a Google Adsben erősítsd meg, ne a böngészőben.

## `mailto:` hivatkozások követése Google Ads konverzióval

Az újabb változatokon a `pmw.trackCustomGoogleAdsConversion()` mindkét védelmet alkalmazza, így a kattintáskezelő törzse egyetlen hívás. Az alábbi változat kézzel kiírja őket, és minden változaton működik.

```php
add_action('wp_footer', function () { ?>
    <script>
        window._pmwq = window._pmwq || [];
        window._pmwq.push(function () {
            jQuery(document).on("click", "a[href^='mailto:']", function (event) {
                if (!pmw.googleConfigConditionsMet({type: "marketing"})) return;
                pmw.gtagLoaded().then(function () {
                    gtag("event", "conversion", {
                        // Cseréld le a saját konverzióazonosítódra és címkédre
                        "send_to": "AW-1000000000/0000000000",
                    });
                }).catch(function () {
                    // a Google-címke nem töltődött be
                });
            });
        });
    </script>
<?php });
```

## `add-to-cart` és `begin-checkout` események követése Google Ads konverzióként

A Google Ads kínál konverziós műveleteket a `add-to-cart` és `begin-checkout` eseményekre. Mi viszont erősen lebeszélünk arról, hogy ezeket az eseményeket konverzióként kövesd a Google Adsben, mert károsak a kampányok nyereséges bevételre optimalizálásához.

Ha mégis úgy döntesz, hogy konverzióként követed őket, az alábbi kóddal teheted meg. Az újabb változatokon a `pmw.trackCustomGoogleAdsConversion()` a kezelőnkénti hozzájárulás-ellenőrzést és a `gtagLoaded()` várakozást egyetlen hívásra cseréli.

```php
add_action('wp_footer', function () {
    ?>
    <script>
        window._pmwq = window._pmwq || [];
        window._pmwq.push(function () {
            pmw.bus.on("pmw:add-to-cart", function (product) {
                if (!pmw.googleConfigConditionsMet({type: "marketing"})) return;
                pmw.gtagLoaded().then(function () {
                    gtag("event", "conversion", {
                        "send_to" : "AW-KONVERZIO_ID/KONVERZIO_CIMKE",
                        "value"   : product.price,
                        "currency": product.currency,
                    });
                }).catch(function () {
                    // a Google-címke nem töltődött be
                });
            });

            pmw.bus.on("pmw:begin-checkout", function () {
                if (!pmw.googleConfigConditionsMet({type: "marketing"})) return;
                pmw.gtagLoaded().then(function () {
                    gtag("event", "conversion", {
                        "send_to" : "AW-KONVERZIO_ID/KONVERZIO_CIMKE",
                    });
                }).catch(function () {
                    // a Google-címke nem töltődött be
                });
            });
        });
    </script>
    <?php
});
```

## A Pixel Manager beállításainak szűrése a WPML nyelve szerint

Ha WPML-t használsz, és az aktuális nyelv szerint más pixelazonosítókat vagy más beállításokat akarsz, használd a `pmw_options` szűrőt. A szűrő a beállításokat a Pixel Manager általi feldolgozás előtt módosítja.

```php
add_filter('pmw_options', function ($options) {

    $current_language = apply_filters('wpml_current_language', null);

    switch ($current_language) {
        case 'de':
            $options['facebook']['pixel_id'] = '123456789';
            break;
        case 'fr':
            $options['facebook']['pixel_id'] = '1122334455';
            break;
        default:
            $options['facebook']['pixel_id'] = '5544332211';
            break;
    }

    return $options;
});
```
