# Függvények: tagságok és szintek lekérdezése

> Az rcp_get_membership(), rcp_get_membership_cancel_url(), rcp_get_memberships() függvények és a tagsági szintek sorrendjét módosító szűrők.

Egyedi kódhoz tartozó függvények, ezért a bevezetésükhöz érdemes fejlesztő segítségét kérni.

## rcp_get_membership()

Egyetlen tagságot kér le az azonosítója alapján. `RCP_Membership` objektumot ad vissza, amelyből kiolvasható az állapot, a dátumok, a fizetési átjáró azonosítói, és használhatók a segédmetódusai.

- `$membership_id` (egész): a tagság azonosítója az adatbázisban.

Visszatérési érték: `RCP_Membership` objektum, vagy `false`, ha nincs ilyen azonosítójú tagság.

Több tagság lekérdezéséhez az `rcp_get_memberships()` való. Ha egy tagságot más oszlop alapján keresel (például `subscription_key`), használd az `rcp_get_membership_by( $field, $value )` segédfüggvényt. Ez csak az engedélyezett tagságokat adja vissza.

Tagság betöltése és az állapotának kiírása:

```php
$membership = rcp_get_membership( 123 );

if ( $membership ) {
	echo $membership->get_status();
}
```

Egy ügyfél tagságainak végigjárása az `RCP_Customer` objektumon át:

```php
$customer = rcp_get_customer_by_user_id( 44 );

if ( $customer ) {
	foreach ( $customer->get_memberships() as $membership ) {
		echo $membership->get_membership_level_name();
	}
}
```

## rcp_get_membership_cancel_url()

Előállítja azt a nonce-szal védett URL-t, amelyen a tag lemondhat egy ismétlődő tagságot (`rcp-action=cancel` és `membership-id` lekérdezési argumentumokkal). Ha a bejelentkezett felhasználó megnyitja az URL-t, a bővítmény elvégzi a lemondást.

Az URL csak ismétlődő tagságra készül, egyébként üres szöveget kapsz. Szűrők: `rcp_membership_cancel_url` (a 3.0-tól), `rcp_member_cancel_url` (elavult).

- `$membership_id` (egész): a tagság azonosítója.

Visszatérési érték (szöveg): a lemondási URL, vagy üres szöveg, ha a tagság nem ismétlődő.

```php
$url = rcp_get_membership_cancel_url( $membership_id );

if ( $url && rcp_can_membership_be_cancelled( $membership_id ) ) {
	echo '<a href="' . esc_url( $url ) . '">' . esc_html__( 'Előfizetés lemondása', 'rcp' ) . '</a>';
}
```

## rcp_get_membership_levels

A tagsági szintek alapértelmezett sorrendjét két szűrő szabályozza, ez határozza meg a `[register_form]` oldalon a szintek sorrendjét:

- `rcp_get_membership_levels_default_orderby`: a rendezés alapja.
- `rcp_get_membership_levels_default_order`: a rendezés iránya (`ASC` vagy `DESC`).

A szintek rendezése név szerint, csökkenő sorrendben:

```php
// A tagsági szintek sorrendjének módosítása.
function my_level_orderby( $orderby ) {
	return 'name';
}
add_filter( 'rcp_get_membership_levels_default_orderby', 'my_level_orderby', 20 );

function my_level_order( $order ) {
	return 'DESC';
}
add_filter( 'rcp_get_membership_levels_default_order', 'my_level_order', 20 );
```

## rcp_get_memberships()

Tagságok lekérdezése szűrőkkel. Az `$args` tömb minden eleme elhagyható.

| Kulcs | Jelentés |
|---|---|
| `id` | Egyetlen tagság azonosítója. |
| `id__in`, `id__not_in` | Tagságazonosítók, amelyeket bele kell venni, illetve ki kell hagyni (tömb). |
| `customer_id` | Csak ennek az ügyfélnek a tagságai. |
| `customer_id__in`, `customer_id__not_in` | Ügyfélazonosítók szerinti szűrés (tömb). |
| `object_id` | A tagsági szint azonosítója. |
| `object_id__in`, `object_id__not_in` | Szintazonosítók szerinti szűrés (tömb). |
| `object_type` | Az objektum típusa. |
| `object_type__in`, `object_type__not_in` | Objektumtípusok szerinti szűrés (tömb). |
| `currency` | Pénznemkód. |
| `created_date_query`, `trial_end_date_query`, `cancellation_date_query`, `expiration_date_query` | Létrehozás, próbaidő vége, lemondás és lejárat ideje szerinti szűrés (`WP_Date_Query` formátum). |
| `auto_renew` | `1`: ismétlődő, `0`: nem ismétlődő. Alapérték: `null` (mindkettő). |
| `status` | Állapot: `pending`, `active`, `cancelled`, `expired`. |
| `status__in`, `status__not_in` | Állapotok szerinti szűrés (tömb). |
| `gateway_customer_id`, `gateway_subscription_id`, `gateway`, `subscription_key` | A fizetési átjáró azonosítói és a tagság kulcsa (szöveg). |
| `upgraded_from` | Annak a tagságnak az azonosítója, amelyről a tagság frissítve lett. |
| `disabled` | `null`: mind, `0`: csak az engedélyezettek, `1`: csak a letiltottak. Alapérték: `0`. |
| `meta_query` | Meta-lekérdezés (tömbök tömbje). |
| `count` | `true`: a találatok számát adja, `false`: objektumokat. Alapérték: `false`. |
| `fields` | A visszaadott oszlop neve. Üresen teljes objektumokat ad. |
| `number` | Legfeljebb ennyi találat. Alapérték: `20`. |
| `offset` | Kihagyott találatok száma. Alapérték: `0`. |
| `no_found_rows` | Kikapcsolja a `SQL_CALC_FOUND_ROWS` lekérdezést. Alapérték: `true`. |
| `orderby`, `order` | Rendezés. Alapérték: `id` és `DESC`. |
| `search` | Keresőszó. |
| `update_cache` | Előtölti a gyorsítótárat. Alapérték: `false`. |

Visszatérési érték: `RCP_Membership` objektumok tömbje.

Az aktív tagságok:

```php
$memberships = rcp_get_memberships( array(
	'status' => 'active'
) );
```

A 3-as szint lejárt tagságai:

```php
$memberships = rcp_get_memberships( array(
	'object_id' => 3,
	'status'    => 'expired'
) );
```

Öt Stripe-tagság:

```php
$memberships = rcp_get_memberships( array(
	'number'  => 5,
	'gateway' => 'stripe'
) );
```

A 2024 decemberében lejáró tagságok lejáratása:

```php
$memberships = rcp_get_memberships( array(
	'expiration_date_query' => array(
		'after'  => date( '2024-12-01 00:00:00', current_time( 'timestamp' ) ),
		'before' => date( '2024-12-31 23:59:59', current_time( 'timestamp' ) ),
	),
	'number' => 9999
) );

if ( ! empty( $memberships ) ) {
	foreach ( $memberships as $membership ) {
		$membership->expire();
	}
}
```

Az automatikus megújítás leállítása az aktív, ismétlődő tagságoknál:

```php
$memberships = rcp_get_memberships( array(
	'status'     => 'active',
	'auto_renew' => 1,
	'number'     => 9999
) );

if ( ! empty( $memberships ) ) {
	foreach ( $memberships as $membership ) {
		if ( $membership->can_cancel() ) {
			$membership->cancel_payment_profile();
		}
	}
}
```

Az aktív tagságok, amelyeknél a `company` meta értéke `Minta Kft.`:

```php
$memberships = rcp_get_memberships( array(
	'status'     => 'active',
	'number'     => 9999,
	'meta_query' => array(
		array(
			'key'   => 'company',
			'value' => 'Minta Kft.',
		)
	)
) );
```
