# Korlátozás sablonfájlokban, widgetekben és a szerkesztődoboz elrejtése

> Tartalom elrejtése PHP-feltételekkel a sablonban és a widgetekben, hozzászólás csak tagoknak, a kivonat hossza és a korlátozási doboz eltávolítása.

Ez a fejezet fejlesztői jellegű megoldásokat tartalmaz: saját kódot igényelnek, és a kód működéséért te felelsz. A sablonfájlokat mindig **gyermektémában** módosítsd, különben a téma frissítése felülírja a változtatásaidat.

## Tartalom korlátozása a sablonban

A sablonfájlok egyes részeit a Restrict Content Pro függvényeivel rejtheted el a nem jogosultak elől.

### Aktív tagoknak

A 3.0.5-ös vagy újabb verzióban az `rcp_user_has_active_membership()` függvényt használd. Régebbi verzióban az `rcp_is_active()` ugyanígy működik.

```php
<?php if ( rcp_user_has_active_membership() ) : ?>
	<p>Ez a rész csak az aktív tagoknak látszik.</p>
<?php endif; ?>
```

### Fizetős tagoknak

Az előző feltétel az aktív ingyenes tagokat is beengedi. Ha csak a fizetős tagságot akarod, használd az `rcp_user_has_paid_membership()` függvényt:

```php
<?php if ( rcp_user_has_paid_membership() ) : ?>
	<p>Ez a rész csak a fizetős tagoknak látszik.</p>
<?php endif; ?>
```

### Adott tagsági szintnek

A 3.0.5-ös vagy újabb verzióban:

```php
<?php if ( in_array( 2, rcp_get_customer_membership_level_ids() ) ) : ?>
	<p>Ez a rész csak a 2-es azonosítójú szint tagjainak látszik.</p>
<?php endif; ?>
```

Régebbi verzióban:

```php
<?php if ( rcp_is_active() && 2 == rcp_get_subscription_id() ) : ?>
	<p>Ez a rész csak a 2-es azonosítójú szint aktív tagjainak látszik.</p>
<?php endif; ?>
```

Mindkét példában a `2` helyére a saját szinted azonosítóját írd.

### A „Restrict this content” doboz beállításai szerint

Egyéni oldalsablonnál használhatod az `rcp_user_can_access()` függvényt. Azt ellenőrzi, hogy a jelenlegi felhasználó megnézheti-e az oldalt a **Restrict this content** doboz beállításai szerint:

```php
<?php if ( rcp_user_can_access() ) : ?>
	<p>Ez a rész azoknak látszik, akik megfelelnek a korlátozási doboz beállításainak.</p>
<?php endif; ?>
```

Az `RCP_Member` osztály szintén használható a hozzáférés ellenőrzésére.

### Hozzászólás csak tagoknak

Ha csak az aktív tagok írhassanak hozzászólást, a téma `comments.php` fájljában keresd meg ezt a sort (a fájl témánként eltér, de a szerkezete hasonló):

```php
<?php comment_form(); ?>
```

és cseréld erre:

```php
<?php if ( rcp_user_has_active_membership() ) : ?>
	<?php comment_form(); ?>
<?php endif; ?>
```

## Widgetek elrejtése a nem tagok elől

A widgetek láthatóságát egy olyan külső bővítménnyel szabályozhatod, amely PHP-kódot fogad el feltételként. Ilyen például a **Widget Options**. A függvényekhez a Restrict Content Pro 3.0.5-ös vagy újabb verziója kell.

1. Telepítsd és kapcsold be a bővítményt. Minden widget alján új beállításrész jelenik meg.
2. Kattints a fogaskerék ikonra, majd a **Logic** fülre.
3. Írd a szövegmezőbe a feltételt. A widget csak akkor jelenik meg, ha a kifejezés értéke igaz.

| Mit akarsz | Kifejezés |
| --- | --- |
| Csak az aktív tagoknak | `rcp_user_has_active_membership()` |
| Csak azoknak, akiknek nincs aktív tagságuk | `! rcp_user_has_active_membership()` |
| Csak a fizetős aktív tagoknak | `rcp_user_has_paid_membership()` |
| Csak az ingyenes aktív tagoknak | `rcp_user_has_free_membership()` |
| Csak a 2-es azonosítójú szint tagjainak | `in_array( 2, rcp_get_customer_membership_level_ids() )` |
| Ugyanez név szerint | `in_array( 'Gold', rcp_get_customer_membership_level_names() )` |
| Az 1-es vagy 2-es szint tagjainak | `count( array_intersect( rcp_get_customer_membership_level_ids(), array( 1, 2 ) ) )` |
| Az 1, 2 vagy 4 azonosítójú szintek tagjainak | `count( array_intersect( rcp_get_customer_membership_level_ids(), array( 1, 2, 4 ) ) )` |
| A Bronze, Silver vagy Gold szint tagjainak | `count( array_intersect( rcp_get_customer_membership_level_names(), array( 'Bronze', 'Silver', 'Gold' ) ) )` |
| Csak a lejárt tagoknak (például újra feliratkozásra buzdításhoz) | `rcp_user_has_expired_membership()` |

A `!` jel tagadást jelent. Légy óvatos a kifejezések beírásakor: egy elírás üres (fehér) oldalt eredményezhet.

## A kivonat hossza

A Restrict Content Pro alapból 50 szavas kivonatot mutat a korlátozott tartalomból. Az `rcp_filter_excerpt_length` szűrővel módosíthatod:

```php
function pw_rcp_custom_excerpt_length( $length ) {
	return 100; // 100 szó
}
add_filter( 'rcp_filter_excerpt_length', 'pw_rcp_custom_excerpt_length' );
```

## A korlátozási doboz eltávolítása egy tartalomtípusról

A **Restrict this content** doboz minden nyilvános tartalomtípus szerkesztőjében megjelenik. Az `rcp_metabox_excluded_post_types` szűrővel kivehetsz belőle típusokat. A szűrő egy tömböt kap, te hozzáadod a kizárandó típusok nevét:

```php
function pippin_exclude_post_types_from_rcp( $post_types ) {
	$post_types[] = 'books';
	$post_types[] = 'page';

	return $post_types;
}
add_filter( 'rcp_metabox_excluded_post_types', 'pippin_exclude_post_types_from_rcp' );
```

A példa a „books” és az oldal („page”) típusról tünteti el a dobozt. Annyi típust adhatsz meg, amennyit szeretnél.
