# Érvényesítés

> Kötelező mezők, az optimalizált érvényesítés és a hibaüzenetek.

Az érvényesítéssel szabályokat adhatsz a mezőknek. A leggyakoribb a kötelező mező: ha a vásárló nem tölti ki, hibaüzenetet kap, és nem teheti kosárba a terméket.

## Kötelező mező

A mező **Általános** fülén kapcsold be a **Kötelező mező?** kapcsolót. A termékoldalon a mező felirata mellett csillag (*) jelzi, hogy kötelező.

## Alapértelmezett viselkedés

Alapból a mezők ellenőrzése a **Kosárba teszem** gombra kattintáskor történik. A WooCommerce ilyenkor elküldi az űrlapot, és újratölti a termékoldalt, a hibaüzenet az újratöltött oldalon jelenik meg. A hibaüzenet helyét és kinézetét a sablon (téma) határozza meg.

![Hibaüzenet kötelező mező kitöltése nélkül](./kepek/kotelezo-hiba.webp)

*Hibaüzenet kötelező mező kitöltése nélkül* (https://minta-bolt.hu/product/keramia-bogre/)

A képen a **Gravírozott felirat kötelező mező.** üzenet látszik a termékoldal tetején.

## Optimalizált érvényesítés

Ha azt szeretnéd, hogy az oldal újratöltése nélkül jelenjen meg a hiba, kapcsold be az **Optimalizált érvényesítést** a **WooCommerce → Beállítások → Termékkiegészítők → Érvényesítés** oldalon.

![Az Érvényesítés szekció beállításai](./kepek/beallitasok-ervenyesites.webp)

*Az Érvényesítés szekció beállításai* (https://minta-bolt.hu/wp-admin/admin.php?page=wc-settings&tab=pewc&section=pewc_optimised_validation)

Bekapcsolva a hibás mezők mellett közvetlenül megjelenik az üzenet, amikor a vásárló a **Kosárba teszem** gombra kattint. Ez sok mezős termékoldalon különösen hasznos, mert megmutatja, melyik mezőt kell javítani.

| Beállítás | Mit csinál |
| --- | --- |
| **Optimalizált érvényesítés** | Bekapcsolja a mezők JavaScript-alapú érvényesítését. |
| **Végösszegek elrejtése az érvényesítésig** | Elrejti a részösszegmezőket, amíg az összes kötelező mező ki nem lett töltve. Optimalizált érvényesítés szükséges hozzá. |
| **Csoportok kikapcsolása** | Kikapcsolja a következő csoportokat, amíg az aktuális csoport összes kötelező mezője ki nem lett töltve. Csak harmonika-, lépés- vagy fülalapú elrendezésben működik. Optimalizált érvényesítés szükséges hozzá. |
| **Görgetés kikapcsolása a lépésalapú elrendezésben** | Kikapcsolja a görgetési animációt a lépésalapú elrendezésben, ha az érvényesítés sikertelen. Optimalizált érvényesítés szükséges hozzá. |

## Ha az érvényesítés nem működik

Ha a vásárló a kötelező mező kitöltése nélkül is kosárba teheti a terméket, kapcsold be az **Optimalizált érvényesítést**. Ez megakadályozza a kosárba helyezést a hibás mezőkkel.

## Számmező érvényesítése

Ha egy számmezőnél minimum vagy maximum értéket adtál meg, a bővítmény akkor is ellenőrzi, ha a mező nem kötelező. Ha például a minimum 5, és a vásárló üresen hagyja a mezőt, akkor is hibaüzenetet kap. A `pewc_only_validate_number_field_value_if_field_required` szűrővel kikapcsolhatod ezt a nem kötelező számmezőknél:

```php
<?php

add_filter( 'pewc_only_validate_number_field_value_if_field_required', '__return_true' );
```

## Hibaüzenetek módosítása

Az üzenetek szövegét kódrészlettel módosíthatod. A kódot a sablon `functions.php` fájljába vagy egy kódrészlet-bővítménybe tedd.

### Az általános üzenet

A `pewc_filter_validation_notice` szűrő a kötelező mező hibaüzenetét cseréli. Három paramétert kap: az eredeti üzenetet, a mező feliratát és a mező adatait.

```php
<?php

add_filter( 'pewc_filter_validation_notice', function ( $uzenet, $felirat, $mezo ) {
	return 'Kérjük, töltsd ki ezt a mezőt: ' . esc_html( $felirat );
}, 10, 3 );
```

### Altermék-mennyiségek üzenetei

Az optimalizált érvényesítésnél a **Termékek** mezők altermék-mennyiségi szabályainak (pontos, legalább, legfeljebb) külön szűrőjük van, amelyek az üzenetet, a mező feliratát és a termékek számát kapják: `pewc_filter_exact_children_validation_notice`, `pewc_filter_min_children_validation_notice` és `pewc_filter_max_children_validation_notice`. Alapból mindhárom ugyanazt a szöveget adja, ezért érdemes külön-külön átírni őket. A legfeljebb szabály üzenetébe beszúrhatod a mező feliratát és a megengedett legnagyobb számot is.

## Egyedi ellenőrzés

A kosárba tételkor futó ellenőrzéshez a `pewc_filter_validate_cart_item_status` szűrő kapcsolódik. A paraméterei: a jelenlegi eredmény (`$passed`), a beküldött adatok (`$_POST`), a mező adatai, a termék azonosítója, a mennyiség és a variáció azonosítója. Ha az ellenőrzés sikertelen, adj hozzá egy hibaüzenetet a WooCommerce-ben, és `false` értéket adj vissza.

Példa, amely egy szám mezőnél legalább 10 értéket követel meg (a `pewc_group_123_456` helyére a saját meződ azonosítója kerül):

```php
<?php

add_filter( 'pewc_filter_validate_cart_item_status', function ( $passed, $post, $item, $product_id, $quantity, $variation_id ) {
	if ( 'pewc_group_123_456' === $item['id'] ) {
		$ertek = isset( $post['pewc_group_123_456'] ) ? floatval( $post['pewc_group_123_456'] ) : 0;
		if ( $ertek < 10 ) {
			wc_add_notice( 'Az értéknek legalább 10-nek kell lennie.', 'error' );
			$passed = false;
		}
	}
	return $passed;
}, 10, 6 );
```

Ugyanígy ellenőrizhetsz más szabályt is, például egy feltöltés-mezőnél a legalább ennyi fájlt, vagy egy adott terméknél az altermékek összmennyiségét a `woocommerce_add_to_cart_validation` horogra kötve. Ügyelj rá, hogy a hibaüzenet szövege egyezzen a szabállyal: ha a kód legalább 3 fájlt kér, az üzenet se írjon mást.
