# Horgok, akciók és szűrők

> Rövid bevezetés a WordPress és a WooCommerce horgaiba, három egyszerű példával.

A horgok (hookok), az akciók és a szűrők segítségével a WooCommerce alapkódjának módosítása nélkül változtathatod meg és bővítheted a boltod működését. Ez a fejezet rövid áttekintést ad róluk. Egyedi akciók és szűrők írásához haladó PHP- és WooCommerce-ismeret kell, ezért ha nem vagy fejlesztő, bízd a munkát egy WordPress/WooCommerce fejlesztőre.

## Mi a horog?

A horog egy olyan pont a WordPress vagy a WooCommerce működésében, amelyhez saját kódot kapcsolhatsz. A horog gyűjtőfogalom: ide tartoznak az akciók és a szűrők is.

Példa: a `woocommerce_thankyou` akció a pénztár megrendelés utáni oldalán fut le. Ha rögtön a vásárlás után akarsz valamit csinálni, például egyéni visszaigazolást küldeni, a függvényedet erre a horogra kapcsolhatod:

```php
function egyedi_koszonoszoveg_akcio($order_id) {
    // Egyéni visszaigazolás küldése vagy más teendő
}

add_action('woocommerce_thankyou', 'egyedi_koszonoszoveg_akcio');
```

A függvény megkapja a WooCommerce-től a rendelés azonosítóját.

## Akciók

Az akció olyan horog, amelyre kapcsolt függvény a WordPress futásának egy meghatározott pontján vagy egy esemény bekövetkeztekor lefut. Valami extrát csinál: például köszöntő e-mailt küld, amikor új felhasználó regisztrál.

Példa: a `woocommerce_before_cart` akció közvetlenül a kosár tartalma előtt fut. Ide tehetsz egy üzenetet a kosár oldal tetejére:

```php
function egyedi_kosar_uzenet() {
    echo '<p>Ne felejtsd el beváltani a kuponodat a pénztár előtt!</p>';
}

add_action('woocommerce_before_cart', 'egyedi_kosar_uzenet');
```

## Szűrők

A szűrő adatot módosít. Amikor egy adat áthalad a szűrőn, a rá kapcsolt függvények feldolgozzák, mielőtt visszaadódik vagy megjelenik. Így változtathatod meg például az árak megjelenítését, a címeket vagy egy gomb alapértelmezett szövegét. A szűrő nem újabb műveletet indít, hanem átalakítja az adatot.

Példa: a `woocommerce_sale_flash` szűrővel átírhatod a leárazott termékeken megjelenő jelvény szövegét:

```php
function egyedi_akcios_jelveny() {
    return '<span class="onsale">Korlátozott ajánlat</span>';
}

add_filter('woocommerce_sale_flash', 'egyedi_akcios_jelveny');
```

Ez a függvény az alapértelmezett akciós jelvényt cseréli a „Korlátozott ajánlat” szövegre minden leárazott terméken.

## Az akciók és szűrők általános szerkezete

Az akcióra a függvényedet az `add_action` hívással kapcsolod. A horog nevét a WordPress és a WooCommerce a kódjában a `do_action('akcio_neve');` hívással futtatja le, és ekkor indul el a rákapcsolt függvényed:

```php
add_action( 'akcio_neve', 'sajat_fuggveny_neve' );

function sajat_fuggveny_neve() {
    // Ide kerül a saját kódod
}
```

A szűrőt az `add_filter` hívással használod. A WooCommerce a kódjában az `apply_filters( 'szuro_neve', $valtozo );` hívással adja át az adatot. A függvényed megkapja a változót, módosíthatja, és **mindig vissza kell adnia** egy értéket:

```php
add_filter( 'szuro_neve', 'sajat_fuggveny_neve' );

function sajat_fuggveny_neve( $valtozo ) {
    // Ide kerül a saját kódod
    return $valtozo;
}
```

Ha a szűrő függvénye nem ad vissza értéket, az adat elvész, és az oldalon hiányozhat a módosított elem.

## Hova írd a saját kódot?

A saját kódot kétféleképpen helyezheted el:

- egy gyermektéma `functions.php` fájljában;
- egy kódrészlet-kezelő bővítménnyel, például a Code Snippets nevű bővítménnyel.

Nagyobb téma- vagy bővítményfrissítésnél a gyermektéma védi meg a módosításaidat, ezért az első módszer tisztább megoldás.

## Példa: a pénztár mezőinek módosítása

A pénztár mezőinek módosítása jól mutatja, mire használható együtt az akció és a szűrő:

- **Akcióval** új mezőt adhatsz a pénztárhoz, és ezt az új mezőt hozzáadhatod a rendeléshez.
- **Szűrővel** átírhatod a meglévő mezők címkéit és helykitöltő szövegeit, egy kötelező mezőt választhatóvá tehetsz, és eltávolíthatsz meglévő mezőket.

A WooCommerce teljes horog- és API-listája a fejlesztői dokumentációban található. A horgokról és a szűrőkről további kódrészlet-példákat a fejlesztői oldalakon találsz. A boltvezetőnek elég tudnia, hogy ilyen lehetőség létezik, és hogy a támogatás nem terjed ki az egyedi kódra.

## Mire figyelj

- A saját kód hibája az egész boltot leállíthatja, ezért élő boltra csak kipróbált kódot tegyél, és előtte készíts biztonsági mentést ([Biztonsági mentés](https://hub.hellowp.io/hu/manuals/woocommerce/utmutatok/utmutatok-biztonsagi-mentes/)).
- Ha hiba miatt nem éred el az admin felületet, a [bővítmények kikapcsolása](https://hub.hellowp.io/hu/manuals/woocommerce/utmutatok/utmutatok-bovitmenyek-kikapcsolasa/) segíthet.
- Ha egyedi működést szeretnél, de nem érzed magad otthon a kódban, fordulj egy WooCommerce-fejlesztőhöz vagy ügynökséghez.
