# PHP-szűrők: további szűrők

> Szűrők az eseménykiváltókhoz, a termék-adatréteg kimenetéhez, a Meta beállításaihoz, a kizárásokhoz, a hozzájáruláshoz, az adminfelülethez és a beállításmentésekhez.

Ez a fejezet a többi PHP-szűrőt gyűjti össze. A szűrőket a gyermektéma `functions.php` fájljába tedd. Ha egy szűrőnek nem találod a helyét, nézd meg az [értékekről és azonosítókról](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-php-szurok-ertekek/), illetve a [szerveroldali küldésről](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-php-szurok-szerveroldal/) szóló fejezetet is.

## Facebook hibrid mobilalkalmazás-események bekapcsolása

Ha egy csomagolóval (wrapper) a weboldaladat hibrid mobilalkalmazásként teszed elérhetővé iOS-en vagy Androidon, a következő szűrővel bekapcsolhatod a Facebook hibrid mobilalkalmazás-események hídját.

```php
add_filter('pmw_facebook_mobile_bridge_app_id', function () {
    return 'YOUR_APP_ID';
});
```

## További szelektorok megadása egyes eseményekhez

Ha olyan egyedi témát használsz, amely nem alkalmazza a szabványos WooCommerce-osztályokat az olyan gombokon, mint a kosárba tétel vagy a pénztár megkezdése, az események nem sülnek el. Ilyenkor az alábbi szűrőkkel további szelektorokat adhatsz meg az egyes eseményekhez.

Először a `body` szelektort próbáld: a legtöbb esetben ez önmagában működik, és kijavítja a kiváltót. Ne használd a `document` szelektort, az nem működik.

### A kosárba tétel (add-to-cart) esemény

Először a `body` szelektort próbáld. A legtöbb témánál ez működik.

```php
add_filter('pmw_add_selectors_add_to_cart', function () {
    return [
        'body',
    ];
});
```

Ha ez nem működik, olyan szelektort kell hozzáadnod, amely arra a gombra jellemző, amelyik a kosárba tétel eseményt kiváltja.

```php
add_filter('pmw_add_selectors_add_to_cart', function () {
    return [
        '.custom-add-to-cart-selector',
    ];
});
```

### A pénztár megkezdése (begin-checkout) esemény

Először a `body` szelektort próbáld.

```php
add_filter('pmw_add_selectors_begin_checkout', function () {
    return [
        'body',
    ];
});
```

Ha ez nem működik, add meg a pénztár megkezdését kiváltó gombra jellemző szelektort.

```php
add_filter('pmw_add_selectors_begin_checkout', function () {
    return [
        '.custom-begin-checkout-selector',
    ];
});
```

## A pénztár oldal betöltésekor kiváltott begin_checkout kikapcsolása

A Pixel Manager elsüti a `begin_checkout` eseményt, amikor a pénztár oldal nem üres kosárral betöltődik, és az adott kosárra még nem küldtek `begin_checkout` eseményt. Ez azokat a vásárlókat is lefedi, akik anélkül érik el a pénztárat, hogy rákattintanának egy „tovább a pénztárhoz” gombra: tölcsérépítők, „vedd meg most” gombok, közvetlen pénztári hivatkozások és blokkalapú kosarak. A szűrővel kikapcsolhatod ezt a kiváltót, és csak a kattintásalapút tartod meg. A kiváltó alapból be van kapcsolva.

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

Az esemény munkamenet-jelzővel kettőzésmentesítve van a kattintásalapú kiváltóval szemben, ezért a bekapcsolt kiváltó nem eredményez második `begin_checkout` eseményt ugyanarra a kosárra.

## A szülő view_item elsütése változatos termékek oldalán

Bekapcsolt **Variations Output** mellett a Pixel Manager nem süt el `view_item` eseményt egy változatos termék oldalán, amíg a vásárló nem választ változatot. A WooCommerce alapból nem választ ki előre változatot, ezért az ilyen boltokon a termékoldal megtekintése jelentetlen marad, és a látogató nem kerül be az adott termék remarketing-közönségébe. A szűrővel az oldal betöltésekor a szülőtermékkel is elsüthetsz egy `view_item` eseményt. Alapból ki van kapcsolva.

```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, tehát az a vásárló, aki választ, két `view_item` eseményt ad: a szülőét az oldalbetöltéskor, aztán a változatét.

> **Vigyázat:** Csak akkor kapcsold be, ha a termékfeededben szülőtermékek vannak. A dinamikus remarketinghez az eseménnyel küldött termékazonosítónak egyeznie kell a feltöltött katalógus egy tételével, és bekapcsolt Variations Outputnál a katalógus a változatokat tartalmazza, nem a szülőt. Az a szülőazonosító, amelyet a katalógus nem tartalmaz, a hirdetési platformoknál nem párosított tételként jelenik meg. Ha a feeded végig szülőtermékekre épül, inkább kapcsold ki a Variations Outputot: az az összes termékjelentést szülőazonosítókra váltja, és nem kell hozzá szűrő.

A szűrő megkapja a termékazonosítót, így a döntést termékenként is meghozhatod. Ez akkor hasznos, ha a katalógusnak csak egy része van szülőtermékként feedelve:

```php
add_filter('pmw_fire_parent_view_item_on_variable_products', function ($fire, $product_id) {
    return has_term('bundles', 'product_cat', $product_id);
}, 10, 2);
```

A szűrő a [Tippek és trükkök](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-tippek-es-trukkok/) fejezetben leírt JavaScript-es megoldást váltja ki, amely törékenyebb volt.

## A Google Ads remarketing események kihagyása változatos szülőtermékeknél

Ha a Pixel Manager változatazonosítókat jelent, az a változatos termékoldal vagy termékrács, amelyen nincs változat kiválasztva, csak a szülőazonosítót tudja jelenteni. A Google Ads ilyenkor olyan azonosítót kap, amely nincs a feedben. Ha `false` értéket adsz vissza, a bővítmény ezeket az eseményeket kihagyja.

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

A hatóköre szándékosan szűk: csak a Google Ads dinamikus remarketing `view_item_list` és `search` eseményeit érinti, és csak a változatos szülőtermékeknél, miközben az **Output product variations as separate items** be van kapcsolva. Minden más pixel és esemény érintetlen.

> **Megjegyzés:** A Google Ads elfogadja a szülőazonosítókat, ha azok szerepelnek a Merchant Center feedben. Mielőtt kikapcsolod ezeket az eseményeket, ellenőrizd a feedet, mert a kihagyásukkal az oldalmegtekintések remarketing-közönségjele is elvész.

## A Pixel Manager szkriptjének nyitó címkéje (attribútumok)

Szűrő a szkriptek nyitó címkéjének attribútumaihoz. Példa: a Cloudflare `data-cfasync` attribútumának hozzáadása a szkriptcímkéhez.

```php
add_filter('pmw_opening_script_string_attributes', function ($attributes) {
    $attributes['data-cfasync'] = ['false'];
    return $attributes;
});
```

## A Google-címke azonosítójának módosítása

A szűrővel felülírhatod az alapértelmezett Google-címke azonosítót. A felülírás minden kérésnél érvényesül, ezért akkor is hat, ha a címkeazonosító gyorsítótárazott. A régebbi `google_tag_id` név elavult álnévként még működik.

```php
add_filter('pmw_google_tag_id', function ($tag_id) {
    return "AW-1234567890";
});
```

## A kosártétel beágyazott szkriptjének elnyomása

Egyes témák olyan JavaScript-alapú megjelenítőket használnak, amelyek nem rejtik el megfelelően a `<script>` címkéket, ezért azok láthatóvá válnak az oldalon. Ez témahiba, de ha a témát nem tudod könnyen cserélni, ezzel a szűrővel elnyomhatod a kosártételek adatainak beágyazott szkriptjét.

A Pixel Manager kis beágyazott `<script>` címkéket ír ki minden kosártétel neve után a kosár interakcióinak követésére (például a `remove_from_cart` események). Ha ezeket elnyomod, a bővítmény AJAX-szal tölti be a kosártétel adatait, így a követés tovább működik.

A szűrő hívása:

```php
apply_filters('pmw_output_cart_item_data', $output, $cart_item, $cart_item_key, $action)
```

| Paraméter | Típus | Leírás |
|---|---|---|
| `$output` | bool | Kiírja-e a szkriptet. Alapértelmezett: `true`. |
| `$cart_item` | array | A kosártétel adatai (`product_id` és `variation_id`). |
| `$cart_item_key` | string | A kosártétel egyedi kulcsa. |
| `$action` | string | Az aktuális action hook neve (lásd alább). |

Az `$action` paraméter megmondja, melyik hook váltotta ki a kimenetet:

- `woocommerce_after_cart_item_name`: a kosár oldal
- `woocommerce_after_mini_cart_item_name`: a minikosár modul
- `woocommerce_mini_cart_contents`: a minikosár tartaléka

Az összes kosártétel-szkript elnyomása:

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

Elnyomás csak a kosár oldalon:

```php
add_filter('pmw_output_cart_item_data', function ($output, $cart_item, $cart_item_key, $action) {
    if ($action === 'woocommerce_after_cart_item_name' && is_cart()) {
        return false;
    }
    return $output;
}, 10, 4);
```

Elnyomás a kosár és a pénztár oldalon:

```php
add_filter('pmw_output_cart_item_data', function ($output, $cart_item, $cart_item_key, $action) {
    if ($action === 'woocommerce_after_cart_item_name' && (is_cart() || is_checkout())) {
        return false;
    }
    return $output;
}, 10, 4);
```

Elnyomás csak a minikosárban:

```php
add_filter('pmw_output_cart_item_data', function ($output, $cart_item, $cart_item_key, $action) {
    if (in_array($action, ['woocommerce_after_mini_cart_item_name', 'woocommerce_mini_cart_contents'])) {
        return false;
    }
    return $output;
}, 10, 4);
```

## A termék-adatréteg kimenete a termékhurkokban

A Pixel Manager egy rejtett jelölőelemet és egy kis beágyazott `<script>` címkét ír ki a WooCommerce termékhurkokban minden termék után (a `woocommerce_after_shop_loop_item` hookon át). Ez a kimenet hajtja a `view_item_list` és `select_item` eseményeket a terméklistákon.

Egyes oldalszerkesztők és témák megtisztítják (sanitize) annak a hooknak a kimenetét. A címkéket eltávolítják, a szkript tartalma pedig nyers szövegként látszik minden termékkártyán. Ismert példa az Elementor Products modulja és az olyan témaszerkesztők, amelyek saját termékkártyákat rajzolnak. Ez az oldalszerkesztő hibája, de ha nem tudsz javításra várni, a Pixel Manager két szűrőt kínál a megkerülésre.

### A kimenet halasztása a lábrészbe (ajánlott)

A `pmw_defer_product_data_layer_to_footer` szűrő a termék-adatréteg kimenetét a `wp_footer` hookra helyezi át, a tisztító oldalszerkesztők elérésén kívülre, és a követés teljesen működőképes marad. A Pixel Manager a lábrészben írja ki az adatszkripteket, és egy kis szkripttel visszahelyezi a jelölőelemeket a termékkártyákba (a szabványos WooCommerce `post-{id}` hurokelem-osztállyal párosítva).

A szűrő hívása:

```php
apply_filters('pmw_defer_product_data_layer_to_footer', $defer, $product)
```

| Paraméter | Típus | Leírás |
|---|---|---|
| `$defer` | bool | Halassza-e a kimenetet a lábrészbe. Alapértelmezett: `false`. |
| `$product` | WC_Product | A kiírt termék. |

Halasztás mindenhol (innen indulj):

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

Ez attól függetlenül működik, hogy melyik oldalszerkesztő, téma vagy modul rajzolja a termékrácsaidat. Ezzel először azt erősítsd meg, hogy a szűrő megoldja a problémádat. Ha igen, utána szűkítheted az adott modulra.

Halasztás csak az Elementor Products modulján belül:

> **Figyelem:** A `woocommerce-products` modul az Elementor Pro része. Ha csak az ingyenes Elementort futtatod, vagy a termékrácsod a témádból jön (például egy témaszerkesztő modulból), ez a kódrészlet soha nem fut le, és semmi nem változik. Ilyenkor a fenti globális szűrőt használd.

```php
add_action('elementor/frontend/widget/before_render', function ($widget) {
    if ('woocommerce-products' === $widget->get_name()) {
        add_filter('pmw_defer_product_data_layer_to_footer', '__return_true');
    }
});

add_action('elementor/frontend/widget/after_render', function ($widget) {
    if ('woocommerce-products' === $widget->get_name()) {
        remove_filter('pmw_defer_product_data_layer_to_footer', '__return_true');
    }
});
```

Ugyanez a minta más oldalszerkesztőkkel is működik. Kapcsold be a szűrőt közvetlenül a problémás modul vagy elem kirajzolása előtt, és kapcsold ki közvetlenül utána, az oldalszerkesztő hookjaival. Ügyelj rá, hogy a vizsgált modulnév az legyen, amelyet a rácsod ténylegesen használ, különben a szűrő sosem érvényesül.

> **Figyelem:** Azokat a termékeket, amelyeket egy modul a kezdeti oldalkirajzolás után tölt be, például AJAX-os lapozással vagy „több betöltése” gombbal, a lábrészes menet nem fedi le. Csak ott halassz, ahol szükséges.

### A kimenet teljes elnyomása

Ha nincs szükséged a `view_item_list` és `select_item` követésre az érintett termékeknél, a kimenetet teljesen elnyomhatod a `pmw_output_product_data_layer_script` szűrővel. Minden más követés, például a termékoldalak, a kosár és a vásárlási események, érintetlen marad.

A szűrő hívása:

```php
apply_filters('pmw_output_product_data_layer_script', $output, $product, $meta_tag)
```

| Paraméter | Típus | Leírás |
|---|---|---|
| `$output` | bool | Kiírja-e a termék-adatréteget. Alapértelmezett: `true`. |
| `$product` | WC_Product | A kiírt termék. |
| `$meta_tag` | bool | `true` a termékoldalak fejrészében lévő meta címke kimenetére, `false` hurok-környezetben. |

Elnyomás mindenhol:

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

Elnyomás csak az Elementor Products modulján belül (ugyanaz a figyelmeztetés érvényes, mint fent: a modul az Elementor Pro része):

```php
add_action('elementor/frontend/widget/before_render', function ($widget) {
    if ('woocommerce-products' === $widget->get_name()) {
        add_filter('pmw_output_product_data_layer_script', '__return_false');
    }
});

add_action('elementor/frontend/widget/after_render', function ($widget) {
    if ('woocommerce-products' === $widget->get_name()) {
        remove_filter('pmw_output_product_data_layer_script', '__return_false');
    }
});
```

## Az adatréteg módosítása

A `pmw_experimental_data_layer` szűrő átadja a teljes `pmwDataLayer` objektumot, közvetlenül az oldalra írás előtt. Minden érték, amelyet a követőkönyvtár a frontenden olvas, átmegy rajta: `shop`, `cart`, `products`, `user`, `general` és a pixelbeállítások. A régebbi `wpm_experimental_data_layer` név elavult álnévként még működik.

> **Figyelem:** Ez alacsony szintű szűrő. Az adatréteg szerkezete kiadások között változhat, ezért frissítés után ellenőrizd a testreszabásodat. Ha létezik konkrét szűrő arra, amire szükséged van, azt részesítsd előnyben.

Gyakori használata az oldaltípus javítása olyan boltokon, ahol a pénztárat külső pénztárszerkesztő rajzolja ki:

```php
add_filter('pmw_experimental_data_layer', function ($data) {
    if ('cart' === $data['shop']['page_type'] && is_checkout()) {
        $data['shop']['page_type'] = 'checkout';
        $data['shop']['list_name'] = 'Checkout Page';
        $data['shop']['list_id']   = 'checkout';
    }
    return $data;
});
```

Az újabb változatok ezt az esetet magukat megoldják azoknál a pénztárszerkesztőknél, amelyek miatt az `is_cart()` a pénztár oldalon is igaz.

## A Meta automatikus konfigurációjának kikapcsolása

A Meta pixele minden oldalmegtekintéskor betölt egy konfigurációt a `https://connect.facebook.net/signals/config/<pixel_id>` címről, és bekapcsolja a pixelnek az abban megnevezett funkciókat. Az `autoConfig` ezek egyik csoportjának, a Meta `AutomaticSetup` csomagjának a beleegyezése, amelynek legszembetűnőbb tagja az automatikus eseményfelismerés. A szűrővel kivonhatod a pixelt ebből a csomagból a weboldaladról, az Events Managerben a pixelhez nyúlás nélkül. A Meta automatikus konfigurációja alapból be van kapcsolva, ahogy a Meta szállítja.

```php
add_filter('pmw_facebook_auto_config', function ($enabled, $pixel_id) {
    return false;
}, 10, 2);
```

A Pixel Manager ekkor `fbq('set', 'autoConfig', false, '<pixel_id>')` hívást ad ki közvetlenül a pixel inicializálása előtt, ez az egyetlen pillanat, amikor az `fbevents.js` tiszteletben tartja a beállítást. A pixelkonfigurációval egy pillanattal később érkező beleegyező hívások a Meta „ne írd felül a kivonást” jelzőjével mennek, így nem kapcsolhatják vissza a csomagot.

A szűrő minden beállított pixelre egyszer fut, így több pixeles beállításnál pixelenként kezelheted:

```php
add_filter('pmw_facebook_auto_config', function ($enabled, $pixel_id) {
    if ('123456789012345' === $pixel_id) {
        return false;
    }
    return $enabled;
}, 10, 2);
```

> **Figyelem:** Egyetlen Meta-funkció kikapcsolása az Events Managerben célzottabb, minden olyan oldalra és integrációra érvényes, amely a pixelt használja, és szinte minden esetben ez a jobb javítás. Az `fbevents.js` egy ismert kiadásától a csomag, amelyből kivonod magad, tartalmazza még: a mikroadat-kinyerést és a jogos események gazdagítását, valamint a Meta `AutomaticParameters` műszerezését (a Pixel Manager saját eseményadata és a rendelési és vásárlói adatokból épített advanced matching érintetlen marad), a Meta reguláris kifejezésen és mesterséges intelligencián alapuló párosító kiterjesztéseit és a SmartSetupot a teljes ár kinyerésével együtt, az elköteleződés-műszerezést (görgetési mélység, oldal-metaadatok, a Meta webes csevegőintegrációja), valamint a jövőbeli Meta-funkciókat, amelyeket ugyanebben a csomagban szállítanak.

Amit ez a szűrő nem tesz, mert az `fbevents.js` mindegyiket a saját beleegyezéséhez köti:

- Nem akadályozza meg, hogy a konfigurációs fájl letöltődjön és lefusson. Az `autoConfig` kivonás, nem olyan kapcsoló, amely megakadályozza a fájl betöltését.
- Nem állítja meg az Event Setup Tool szabályait és értékkinyerőit. A szabálymotor saját kattintásfigyelőt telepít, és csak a saját beleegyezését ellenőrzi.
- Nem állítja meg a Meta Conversions API Gatewayét (`openbridge`).
- Nem állítja meg a Meta alap automatikus advanced matchingjét, az üzleti kategória szerinti eseménykorlátozásait, az első fél sütiit és a botblokkolást.

> **Veszély:** Soha ne kézzel építsd ezt a saját `window.fbq` helyőrződdel. A Meta indítókódja azzal kezdődik, hogy „ha az `fbq` már létezik, ne csinálj semmit”, ezért a Pixel Manager futása előtt definiált idegen `fbq` megakadályozza az `fbevents.js` betöltését, és a Meta-pixel semmit nem követ. A Pixel Manager konzolfigyelmeztetést ír ki, ha ilyet észlel.

A hibakeresési jelentés a Meta Event Setup Tool alatt felsorolja az összes pixelt, amelyre ez a szűrő kikapcsolja az `autoConfig` beállítást.

## URL-ek blokkolása az összes böngészős követésből

A Google hirdetésminőség-ellenőrző robotjai és a Google Fordító a boltot proxy-domain alatt, például `xyz.appspot.com` vagy `translate.google.com` alatt jelenítik meg. Ezek az oldalmegtekintések egy pixelnek valódi oldalmegtekintések, és felfújják a számokat. A szűrővel saját mintákat adhatsz azoknak az URL-eknek a listájához, amelyeken a Pixel Manager el sem indul.

Minden bejegyzés sima részszövegként illeszkedik az oldal teljes URL-jére (`window.location.href`), így egy domain, egy hoszt és útvonal, vagy bármilyen felismerhető töredék is működik. Az `appspot.com` és a `translate.google.com` be van építve, ezeket nem kell hozzáadni.

```php
add_filter('pmw_exclude_domains_from_tracking', function ($domains) {
    $domains[] = 'webcache.googleusercontent.com';
    $domains[] = 'staging.example.com';
    return $domains;
});
```

Ha egy minta illeszkedik, a Pixel Manager az inicializálás előtt megáll, így egyetlen böngészőpixel sem sül el, és egyetlen böngészős esemény sem jut el a Conversion API-khoz. Azokat a szerveroldali vásárlási eseményeket, amelyeket a PHP a pénztár végén küld, nem érinti, mert azok sosem a böngészőben futnak. Azokhoz a `pmw_skip_s2s_purchase_event` szűrőt használd.

> **Figyelem:** Az illesztés a teljes URL részszövege, a lekérdezési karakterlánccal együtt. Az olyan minta, mint a `de`, szinte minden URL-re illeszkedik, ezért a mintákat tartsd pontosan megfogalmazva.

## Bot felhasználói ügynökök blokkolása az összes követésből

A Pixel Manager elnyomja a követést azoknál a böngészőknél, amelyek felhasználói ügynöke ismert robotot (crawlert) azonosít. Ezért nem sülhetnek el események a Googlebot és a Google Merchant Center robotjai által a boltodban. A szűrővel saját mintákat adhatsz hozzá. A beépített lista már lefedi a keresőmotor-robotokat, a mesterséges intelligenciás robotokat, a közösségi előnézet-lekérőket, az SEO-csomagokat, a gyakori üzemidő-figyelőket, a fej nélküli böngészőket és az általános HTTP-könyvtárakat, ezért a legtöbb bolt soha nem igényli ezt a szűrőt.

Minden bejegyzés kis- és nagybetű megkülönböztetése nélkül illeszkedik a `navigator.userAgent` részszövegeként.

```php
add_filter('pmw_exclude_user_agents_from_server_2_server_events', function ($patterns) {
    $patterns[] = 'MyMonitoringBot';
    $patterns[] = 'InternalHealthCheck';
    return $patterns;
});
```

A szűrő neve történeti okokból szól a szerver-szerver eseményekről. Az illeszkedő felhasználói ügynököt a bővítmény pontosan úgy kezeli, mint a kizárt IP-címet, vagyis az összes böngészős követés is elnyomódik, nem csak a szerver-szerver események.

## A kifejezett hozzájárulási mód kényszerített bekapcsolása

Visszaadja, hogy a kifejezett hozzájárulási mód (Explicit Consent Mode) aktív-e, függetlenül attól, mit mond a beállítás. Ezt használd, ha a módnak jogi okból be kell lennie kapcsolva, és a beállításokhoz hozzáférők közül senki ne tudja kikapcsolni.

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

A mód ekkor a beállítás mellett is aktív, ezért a `false` visszaadása nem kapcsolja ki, ha a beállítás be van kapcsolva. Maga a beállítás nem változik, tehát a beállítófelület tovább azt mutatja, amit oda mentettek.

A szűrő minden kérésnél lefut, ezért az olyan visszahívás, amelynek a módra csak a forgalom egy részénél van szüksége, kérésenként dönthet:

```php
add_filter('pmw_consent_management_is_explicit_consent_active', function ($active) {
    $country = \WC_Geolocation::geolocate_ip()['country'];
    return in_array($country, ['AT', 'BE', 'DE', 'FR', 'IT', 'NL'], true);
});
```

Tartsd olcsón az ilyen visszahívást. Oldalbetöltéskor és AJAX-kéréseknél is meghívódik, ezért egy költséges lekérdezés sokszorosan megfizetődik.

## Google Analytics hibakeresési mód

Bekapcsolja a `debug_mode` paramétert a Google Analytics eseményeknél, ettől jelennek meg valós időben a GA4 DebugView nézetben. A Measurement Protocol események Pro funkciók.

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

Mindkét szállítási utat lefedi: a böngészős események az adatrétegen át kapják a `debug_mode` értéket, a szerveroldali Measurement Protocol `purchase` és `refund` adatcsomagok pedig eseményparaméterként kapják.

> **Figyelem:** A hibakeresési mód fejlesztői eszköz. A `debug_mode` értékkel küldött eseményeket rendes eseményként is feldolgozzák, ezért éles boltban hagyd kikapcsolva a szűrőt, kivéve, ha éppen hibát keresel.

## A Meta Event Setup Tool vizsgálatának kikapcsolása

Naponta egyszer a Pixel Manager beolvassa minden beállított pixel Meta-jelzéskonfigurációját, és jelenti az abban talált Event Setup Tool szabályokat, mert azok olyan eseményeket sütnek el, amelyek felett a Pixel Managernek nincs kontrollja. A szűrővel kikapcsolhatod ezt a vizsgálatot.

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

A vizsgálat naponta egy gyorsítótárazott kérés, és a frontendet soha nem érinti, ezért kikapcsolása leginkább olyan boltnál értelmes, amelynek kimenő kérései le vannak zárva. A kompromisszum az, hogy a pixeled Event Setup Tool szabályait ezután sehol nem jelenti a bővítmény.

## A Meta fbevents.js kiszolgálása másik URL-ről

Lecseréli a Meta `fbevents.js` fájljának URL-jét. Használd, ha a könyvtárat egy saját tárhelyű másolathoz akarod rögzíteni, vagy saját proxyn át irányítani.

```php
add_filter('pmw_facebook_fbevents_script_url', function () {
    return 'https://cdn.example.com/js/fbevents.js';
});
```

Ha csak a Meta saját fájljának egy adott verziójára van szükséged, használd inkább a `pmw_facebook_fbevents_script_version` szűrőt, amely a verziót a Meta URL-jéhez fűzi. Ezt a szűrőt használja a [hibaelhárítás](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/hibaelharitas/) egy hibás `fbevents.js` kiadás megkerülésére. Ha mindkettő be van állítva, a verziós szűrő nyer.

> **Figyelem:** A saját tárhelyű másolat nem frissíti magát. A Meta folyamatosan szállít változtatásokat az `fbevents.js` fájlban, ezért a rögzített másolat elavul, és végül elromlik. Átmeneti megoldásként kezeld.

## A szkript halasztása és a kísérleti szűrők

A szkript halasztásának és lábrészbe helyezésének kísérleti szűrőit a [Hookok és kísérleti szűrők](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-hookok/) fejezet írja le.

## A konzol verzióinformációs sorának elnyomása

A Pixel Manager minden oldalbetöltéskor egyetlen sort ír a böngészőkonzolba, még akkor is, ha a [konzolnaplózó](https://hub.hellowp.io/hu/plugins/woocommerce-pixel-manager/fejlesztoknek-konzolnaplozo/) ki van kapcsolva:

```text
Pixel Manager for WooCommerce: pro | distro: fms | active license: yes | version: 1.63.0
```

Az elnyomásához használd ezt a szűrőt:

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

A sort nem távolítja el, hanem a konzolnaplózóba sorolja át: kikapcsolt naplózónál semmi nem íródik ki, és újra megjelenik, ha hibakereséshez bekapcsolod a naplózót a `?pmwloggeron` paraméterrel.

## A klasszikus beállítófelület használata

A Nova a Pixel Manager beállítófelülete minden felhasználónak. A korábbi klasszikus felületet a bővítményben már nem lehet kiválasztani. Ha a Nova problémába ütközik az oldaladon, a következő szűrővel visszahozhatod a klasszikus felületet, amíg a hibát kivizsgálják.

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

A szűrő az oldal minden felhasználójára érvényes. Jelezd a támogatásnak is, mit láttál a Novában, hogy kijavíthassák, és utána vedd ki a szűrőt.

## A bővítmény adminisztrációs értesítéseinek elnyomása

Kikapcsolja a Pixel Manager saját adminisztrációs értesítéseit, az értékelés kérését is. Olyan boltnál, amelyet átadsz egy ügyfélnek, vagy olyan ügynökségnél, amely nem akarja, hogy a bővítmény megszólítsa a boltot üzemeltetőt, ez a megfelelő szűrő. A régebbi `wpm_show_admin_notifications` név elavult, de még működik.

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

## A beállítások mentéseinek megőrzése

A Pixel Manager automatikus mentéseket készít a beállításairól, hogy egy módosítást vissza lehessen vonni. Két szűrő szabályozza, hány mentést tart meg, és milyen gyakran készül új.

### Meddig őrződnek a mentések

```php
add_filter('pmw_backup_retention_settings', function ($settings) {
    $settings['recent_count']      = 10;   // a legutóbbi mentések száma
    $settings['daily_retention']   = 30;   // napi mentések megőrzése napokban
    $settings['monthly_retention'] = 24;   // havi mentések megőrzése hónapokban
    $settings['enable_yearly']     = true; // éves mentés bekapcsolása
    return $settings;
});
```

Add vissza mind a négy kulcsot, a megőrzési szabály mindegyiket név szerint olvassa.

### Milyen gyakran készül új mentés

Egy beállítás mentése mentést készít, és az utána következő 5 percben a további mentések újrahasznosítják azt ahelyett, hogy újat hoznának létre, így egy sor szerkesztés egy visszaállítási pont lesz húsz helyett.

```php
add_filter('pmw_options_backup_cooldown_seconds', function ($seconds) {
    return MINUTE_IN_SECONDS;
});
```

A rövidebb ablak finomabb előzményt ad, de több mentés árán. A `0` visszaadása minden egyes mentésnél új biztonsági mentést készít.
