# WordPress-horgok az Ameliában

> Hogyan bővítheted az Amelia működését szűrőkkel és műveletekkel, és hogyan jeleníthetsz meg egyéni hibaüzenetet foglalás befejezése előtt.

A WordPress-horgokkal (hookokkal) úgy módosíthatod az Amelia működését, hogy a bővítmény fájljaihoz nem nyúlsz. Hasznosak, ha át akarod írni egy logikát, egyedi üzenetet akarsz megjeleníteni, további folyamatokat akarsz elindítani, vagy az Ameliát külső rendszerhez kötöd. A horgokat saját PHP-függvényekkel adod hozzá. Mivel a bővítmény logikájára épülnek, a testreszabásaid a frissítések után is megmaradnak.

Fontos: a horgok használatához programozási ismeret kell, és a támogatás csak tanácsadásra terjed ki, kódot nem írnak és nem javítanak helyetted.

## Szűrők és műveletek

| Típus | Mire való | Visszatérési érték |
|---|---|---|
| Szűrő (`add_filter`) | Egy értéket (szöveg, szám, tömb, objektum) módosítasz, mielőtt az Amelia felhasználná. | Kötelezően visszaadod a módosított értéket. |
| Művelet (`add_action`) | Saját kódot futtatsz az Amelia munkafolyamatának adott pontján: naplózás, további értesítés, külső rendszer hívása. | Nem ad vissza semmit. |

A szűrő a meglévő logika fölött fut le, ezért a frissítések nem törlik a módosításodat. A saját kódodat érdemes gyermektémában vagy külön bővítményben tartani, hogy az is megmaradjon a frissítések után.

## Egyéni hibaüzenet a foglalás befejezése előtt

Az Amelia egyik szűrőjével üzenetet jeleníthetsz meg a vásárlónak, mielőtt befejezné a foglalást. Ez akkor jó, ha valamilyen feltételnek teljesülnie kell, például kötelező metaadatnak, jogosultsági feltételnek vagy érvényesítési szabálynak. Ha a szűrő megakasztja a foglalást, a visszaadott üzenet a végső megerősítő lépés helyén jelenik meg.

```php
function example($appointment)
{
   if (1) { // az 1 helyére írd a valódi feltételt
      throw new \AmeliaBooking\Domain\Common\Exceptions\CustomException('Egyéni üzenet');
   }
   return $appointment;
}

add_filter('amelia_before_booking_added_filter', 'example', 10, 1);
```

Az ilyen egyéni érvényesítés ezekben a szűrőkben és műveletekben használható:

| Típus | Horog neve |
|---|---|
| Szűrő | `amelia_before_booking_added_filter` |
| Szűrő | `amelia_before_appointment_booking_saved_filter` |
| Szűrő | `amelia_before_event_booking_saved_filter` |
| Szűrő | `amelia_modify_payment_amount` |
| Szűrő | `amelia_before_payment` |
| Művelet | `amelia_before_booking_added` |
| Művelet | `amelia_before_appointment_booking_saved` |
| Művelet | `amelia_before_event_booking_saved` |

## Az egyes entitások horgai

- [Egyéni mezők](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-horgok-egyeni-mezok/)
- [Erőforrások](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-horgok-eroforrasok/)
- [Csomagok és csomagvásárlások](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-horgok-csomagok/)
- [Kategóriák](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-horgok-kategoriak/)
- [Kuponok](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-horgok-kuponok/)
- [Entitások és időpontok](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-horgok-entitasok-idopontok/)
- [Fizetési módok](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-horgok-fizetesi-modok/)
- [Helyszínek](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-horgok-helyszinek/)
- [Zoom](https://hub.hellowp.io/hu/plugins/ameliabooking/fejlesztoknek-horgok-zoom/)
