# Láthatóság: egyéni feltétel

> Az Egyéni feltétel eseményindító: összetett láthatósági szabályok egyéni PHP-kóddal, gyakorlati példákkal.

Az **Egyéni feltétel** szakasz összetett helyzetekre való: egyéni PHP-kóddal döntheted el, látszik-e az elem. A kódnak logikai értéket (`true` vagy `false`) kell visszaadnia. Hogy a feltétel teljesülése megjelenítést vagy elrejtést jelent, azt a **Megjelenítési mód** dönti el.

![Az Egyéni feltétel szakasz PHP-kódszerkesztővel](./kepek/lathatosag-egyeni-feltetel.webp)

*Az Egyéni feltétel szakasz PHP-kódszerkesztővel* (https://minta-bolt.hu/wp-admin/post.php?post=6&action=elementor)

A képen az **Egyéni PHP feltétel** kódszerkesztője látszik. A leírás szerint írj egy függvényt, amely logikai értéket ad vissza, és minden WP-változót és WP-függvényt használhatsz.

Az alábbi példák csak szemléltetésre valók: éles oldalon való használat előtt egy fejlesztőnek kell hozzáigazítania és kipróbálnia őket.

## Példák

Az aktuális bejegyzés azonosítója szerepel-e egy listában:

```php
$allowed_posts = [1, 21, 37, 46, 55];
return in_array(get_the_ID(), $allowed_posts);
```

Több metaadat értékének vizsgálata:

```php
$metakey1 = get_post_meta($post->ID, 'metakey1', true);
$metakey2 = get_post_meta($post->ID, 'metakey2', true);
return ($metakey1 == 'value1' && $metakey2 == 'value2');
```

A hozzászólások száma:

```php
return get_comments_number(get_the_ID()) > 10;
```

A bejegyzés a múlt héten jelent meg:

```php
return (time() - get_post_time('U', true, get_the_ID()) < WEEK_IN_SECONDS);
```

A bejegyzés egy adott típusú:

```php
return get_post_type(get_the_ID()) === 'my_post_type';
```

A felhasználó szerepköre egy integrált fórumban (például bbPress):

```php
return bbp_get_user_role(get_current_user_id()) === 'bbp_keymaster';
```

A felhasználó megvásárolt egy adott terméket:

```php
$purchased_product_ids = wc_get_customer_bought_products(get_current_user_id());
return in_array('specific_product_id', $purchased_product_ids);
```

A felhasználó összes költése egy összeg fölött van:

```php
$customer_orders = wc_get_orders(['customer_id' => get_current_user_id()]);
$total_spent = array_sum(array_map(function ($order) { return $order->get_total(); }, $customer_orders));
return $total_spent > 500; // 500 helyére a kívánt összeg kerül
```

A kosár összege meghalad egy értéket:

```php
return WC()->cart->total > 100; // 100 helyére a kívánt összeg kerül
```

Egy adott termék a kosárban van:

```php
$product_id = 25; // 25 helyére a vizsgálandó termék azonosítója kerül
return WC()->cart->find_product_in_cart(WC()->cart->generate_cart_id($product_id)) !== false;
```

A kosárban egy megadott számnál több tétel van:

```php
return WC()->cart->get_cart_contents_count() > 5; // 5 helyére a kívánt darabszám kerül
```

A felhasználó utolsó rendelése egy összeg fölött volt:

```php
$last_order = wc_get_customer_last_order(get_current_user_id());
return $last_order && $last_order->get_total() > 200; // 200 helyére a kívánt összeg kerül
```

## Függvény használata

Nem kötelező függvényt írnod: közvetlenül is írhatsz olyan kódot, amely `true` vagy `false` értéket ad vissza. Ha mégis függvényt használsz, meg is kell hívnod, különben nem lesz eredménye.

Hibás, mert a függvény nincs meghívva, így a feltétel nem ad vissza logikai értéket, és hatástalan marad:

```php
function check_condition() { /* a feltételt vizsgáló kód */ }
```

Helyes, függvény nélkül:

```php
return get_comments_number(get_the_ID()) > 10;
```

Helyes, függvénnyel (a függvény meg van hívva, és logikai értéket ad vissza):

```php
return check_condition();
function check_condition() {
    return get_comments_number(get_the_ID()) > 10;
}
```
