# Akciók és szűrők: űrlapok, tagsági szintek, kedvezmények, fizetés

> Tizenkét akció és szűrő leírása paraméterekkel és példákkal: regisztrációs és bejelentkezési űrlap, tagsági szint mentése, kedvezménykód, fizetési átjáró, regisztrációs díj.

Ez a fejezet néhány gyakran használt akciót és szűrőt ír le részletesen. A hookok teljes, témák szerinti listája az [Akciók és szűrők áttekintő listája](https://hub.hellowp.io/hu/plugins/learndash-restrict-content-pro/fejlesztok-altalanos-akciok-es-szurok-listaja/) fejezetben van. Az itt szereplő kód egyedi fejlesztés: a bővítmény támogatása nem terjed ki rá, bonyolultabb feladathoz érdemes fejlesztőt bevonni.

Az akciót `add_action`, a szűrőt `add_filter` hívással csatlakoztatod. Ha a függvényednek több paramétert kell megkapnia, a harmadik szám (a prioritás) után a paraméterek számát is add meg, például `add_action( 'rcp_add_subscription', 'fuggveny', 10, 2 )`.

## Regisztrációs űrlap

### `rcp_before_form_errors`

Akció. Közvetlenül azelőtt fut le, hogy a regisztrációs vagy bejelentkezési űrlap ellenőrzése megtörténik. Itt tudsz hibát megjeleníteni az általad felvett egyedi mezőkhöz.

- Paraméter: a `$_POST` tömb, vagyis az űrlappal elküldött összes adat.

### `rcp_after_password_registration_field`

Akció. Extra mezőket szúrhatsz be vele a regisztrációs űrlapba. Az itt kiírt mezők a **Jelszó** mező után jelennek meg, közvetlenül a tagsági szint választása felett.

### `rcp_after_register_form_fields`

Akció. Az űrlap végére tehetsz vele extra mezőket: a mezők közvetlenül a fizetési mód választása felett jelennek meg. A mezők ellenőrzését az `rcp_form_errors` akcióval végezheted el.

A példa egy jelölőnégyzetet ad az űrlaphoz, és hibát jelez, ha nincs bejelölve:

```php
/**
 * Jelölőnégyzet a regisztrációs űrlapon.
 */
function pelda_rcp_after_register_form_fields() {
	?>
	<p>
		<input name="rcp_sample_required_field" id="rcp_sample_required_field" type="checkbox" checked="checked" />
		<label for="rcp_sample_required_field"><?php esc_html_e( 'A mező felirata*', 'rcp' ); ?></label>
	</p>
	<?php
}
add_action( 'rcp_after_register_form_fields', 'pelda_rcp_after_register_form_fields' );

/**
 * Hibát jelez, ha a jelölőnégyzet nincs bejelölve.
 *
 * @param array $posted Az űrlappal elküldött adatok.
 */
function pelda_rcp_form_errors( $posted ) {
	if ( ! isset( $posted['rcp_sample_required_field'] ) ) {
		rcp_errors()->add( 'sample_field_required', __( 'Ezt a mezőt be kell jelölnöd', 'rcp' ), 'register' );
	}
}
add_action( 'rcp_form_errors', 'pelda_rcp_form_errors' );
```

### `rcp_after_register_form`

Akció. A `rcp_registration_form_fields()` függvényben fut le, közvetlenül azután, hogy a bővítmény betöltötte a regisztrációs sablont (`register.php`, `register-single.php` vagy egy szintspecifikus felülírás), és még azelőtt, hogy az űrlap HTML-je visszatérne. A teljes űrlap alatti tartalomhoz használd azokon az oldalakon, ahol a `register_form` vagy a `register_form_stripe` rövidkód van. Az űrlap belsejébe szánt mezőkhöz az `rcp_after_register_form_fields` való.

Paraméterek:

| Paraméter | Típus | Jelentés |
| --- | --- | --- |
| `$level_id` | int vagy null | A tagsági szint azonosítója, ha az űrlap egyetlen szintre van szűkítve. Ha minden szint látszik, `null`. |
| `$atts` | tömb | A rövidkód attribútumai, például a `registered_message`, ha a felhasználó már rajta van az adott szinten. |

```php
function pelda_rcp_after_register_form( $level_id, $atts ) {
	echo '<p class="rcp-register-footer">' . esc_html__( 'Kérdésed van? Írj nekünk.', 'pelda' ) . '</p>';
}
add_action( 'rcp_after_register_form', 'pelda_rcp_after_register_form', 10, 2 );
```

Kapcsolódó akció: `rcp_before_register_form` (az űrlap előtt fut).

### `rcp_apply_signup_fee_to_registration`

Szűrő. Eldönti, hogy az adott regisztrációra rákerüljön-e a regisztrációs díj. Alapértelmezés szerint akkor igaz, ha a regisztráció megújítás, különben hamis.

| Paraméter | Típus | Jelentés |
| --- | --- | --- |
| `$add_signup_fee` | bool | Rákerüljön-e a díj. |
| `$membership` | objektum | A tagsági szint sora az adatbázisból. |
| `$registration` | `RCP_Registration` | A regisztrációs objektum. |

## Bejelentkezési és jelszóűrlap

### `rcp_after_login_form`

Akció. A bejelentkezési sablon betöltése után fut le, még az `rcp_login_form_fields()` függvényen belül. Az űrlap alatti tartalomhoz használd: hivatkozás, figyelmeztetés vagy a sablonon kívüli extra mező. Nincs paramétere.

```php
function pelda_rcp_after_login_form() {
	echo '<p><a href="' . esc_url( wp_lostpassword_url() ) . '">' . esc_html__( 'Elfelejtetted a jelszavad?', 'pelda' ) . '</a></p>';
}
add_action( 'rcp_after_login_form', 'pelda_rcp_after_login_form' );
```

Kapcsolódó hookok: `rcp_before_login_form`, `rcp_login_form_errors`.

### `rcp_after_password_form`

Akció. A jelszóváltoztató sablon után fut le, az `rcp_change_password_form()` függvényben. Nincs paramétere.

```php
function pelda_rcp_after_password_form() {
	echo '<p>' . esc_html__( 'A jelszó módosítása után bejelentkezve maradsz.', 'pelda' ) . '</p>';
}
add_action( 'rcp_after_password_form', 'pelda_rcp_after_password_form' );
```

Kapcsolódó hookok: `rcp_before_password_form`, `rcp_password_form_errors`.

## Tagsági szintek

### `rcp_add_subscription_form`

Akció. Tartalmat szúr be az **Új szint hozzáadása** táblázatba, így egyedi mezőt tehetsz az űrlapra. A mező értékét az `rcp_add_subscription` akcióval mentheted.

```php
function pelda_szint_mezo() {
	?>
	<tr class="form-field">
		<th scope="row" valign="top">
			<label for="pelda-csoport-engedelyezes"><?php esc_html_e( 'Csoportfiók engedélyezése', 'pelda' ); ?></label>
		</th>
		<td>
			<input id="pelda-csoport-engedelyezes" type="checkbox" name="pelda-csoport-engedelyezes" />
			<p class="description"><?php esc_html_e( 'Jelöld be, ha ennél a szintnél csoportfiók is legyen.', 'pelda' ); ?></p>
		</td>
	</tr>
	<?php
}
add_action( 'rcp_add_subscription_form', 'pelda_szint_mezo' );
```

### `rcp_add_subscription`

Akció. Egy újonnan felvett tagsági szint mentésekor fut le. Az `rcp_add_subscription_form` akcióval együtt használd, ha egyedi mezőt adtál az új szint űrlapjához.

| Paraméter | Típus | Jelentés |
| --- | --- | --- |
| `$level_id` | int | Az új szint azonosítója. |
| `$args` | tömb | A szint létrehozásához használt adatok. |

```php
function pelda_szint_mezo_mentese( $level_id, $args ) {
	if ( empty( $_POST['pelda-csoport-engedelyezes'] ) ) {
		return;
	}

	// Itt mentsd az egyedi értéket a $level_id szinthez.
}
add_action( 'rcp_add_subscription', 'pelda_szint_mezo_mentese', 10, 2 );
```

A `2` az `add_action` hívásban kötelező, különben a függvény nem kapja meg mindkét paramétert.

### `rcp_access_levels`

Szűrő. A választható hozzáférési szintek listáját módosítja. A paraméter (`$levels`) számokból álló tömb, ahol a kulcs és az érték ugyanaz a szám. A példa 20-ra növeli a szintek számát:

```php
function pelda_rcp_access_levels( $levels ) {
	for ( $i = 11; $i <= 20; $i++ ) {
		$levels[ $i ] = $i;
	}
	return $levels;
}
add_filter( 'rcp_access_levels', 'pelda_rcp_access_levels' );
```

## Kedvezménykódok

### `rcp_add_discount`

Akció. Közvetlenül azután fut le, hogy egy új kedvezménykód bekerült az adatbázisba.

| Paraméter | Jelentés |
| --- | --- |
| `$args` | A kedvezmény adatai: `name`, `description`, `amount`, `status`, `unit`, `code`, `expiration`, `max_uses`, `use_count`, `subscription_id`. |
| `$discount_id` | Az új kedvezménykód azonosítója. |

## Fizetési átjárók

### `rcp_gateway_{átjáró azonosítója}`

Akció. A regisztráció elküldésekor fut le, és ez adja át az összes regisztrációs adatot a kiválasztott fizetési átjárónak. Az akció neve az átjáró azonosítójától függ (például `rcp_gateway_stripe`).

Paraméter: `$subscription_data`, a felhasználó és az előfizetés adatait tartalmazó tömb. Kulcsai: `user_email`, `user_id`, `user_name`, `currency`, `price`, `fee`, `discount`, `discount_code`, `length`, `length_unit`, `key`, `subscription_id`, `subscription_name`, `auto_renew`, `return_url`.
