Tovább a tartalomhoz

Függvények: hozzáférés-ellenőrzés, tagsági állapotok és frissítés

Az rcp_is_restricted_content(), rcp_user_can_access(), rcp_user_can_access_term(), rcp_user_has_access(), rcp_user_has_active_membership(), rcp_user_has_expired_membership(), rcp_user_has_free_membership(), rcp_is_trialing(), rcp_set_expiration_date(), rcp_update_membership() és rcp_update_discount() függvény.

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

Megmondja, hogy egy bejegyzésen van-e bármilyen korlátozás: a bejegyzés saját beállításai, a bejegyzéstípus szabályai vagy egy taxonómiakifejezéstől (kategória, címke) örökölt korlátozás. Nem vizsgálja, hogy az adott felhasználó megnézheti-e a tartalmat. Ahhoz az rcp_user_can_access() függvényt használd.

  • $post_id (egész): a bejegyzés azonosítója. Csak számszerű azonosító jó, az üres vagy érvénytelen érték false-t ad.

Visszatérési érték (logikai): true, ha a bejegyzés bármilyen módon korlátozott, különben false.

if ( rcp_is_restricted_content( get_the_ID() ) ) {
// Ezen a bejegyzésen van korlátozás.
}
if ( ! rcp_is_restricted_content( $post_id ) ) {
// Nincs rajta korlátozás.
}

Ugyanezen a néven szűrő is van, amellyel felülbírálhatod az eredményt. Két paramétert kap: $is_restricted (logikai, korlátozott-e a bejegyzés bármilyen módon) és $post_id (egész, az ellenőrzött bejegyzés azonosítója). Ez a szűrő sem azt dönti el, hogy a felhasználó láthatja-e a tartalmat, csak azt, hogy vannak-e korlátozások.

Kapcsolódó függvények: rcp_get_post_restrictions() és a bejegyzés korlátozásait ellenőrző rcp_has_post_restrictions.

Eldönti, hogy egy felhasználó megnézhet-e egy adott bejegyzést (vagy a ciklusban éppen aktuális bejegyzést). A bővítmény teljes korlátozási logikáját lefuttatja: tagsági szinteket, hozzáférési szinteket és a kapcsolódó szabályokat. Sablonokban ez a legmegbízhatóbb ellenőrzés.

Ha a felhasználónak van ügyfélrekordja, a döntést az RCP_Customer::can_access( $post_id ) hozza. Ügyfélrekord nélkül is lehet hozzáférése, ha a bejegyzés nem korlátozott, ha a felhasználó adminisztrátor, vagy ha a bejegyzést csak WordPress-szerepkör korlátozza. A taxonómiákra az rcp_user_can_access_term() való.

  • $user_id (egész): a felhasználó azonosítója. Alapérték: 0, vagyis a bejelentkezett felhasználó.
  • $post_id (egész): a bejegyzés azonosítója. Alapérték: 0, ilyenkor a ciklus globális $post bejegyzését használja. Ha nem állapítható meg bejegyzés, a függvény true-t ad.

Visszatérési érték (logikai): true, ha a felhasználó hozzáfér a tartalomhoz, különben false.

// Az aktuális felhasználó és az aktuális bejegyzés.
if ( rcp_user_can_access( get_current_user_id(), get_the_ID() ) ) {
// Korlátozott tartalom megjelenítése.
} else {
// Korlátozási üzenet vagy átirányítás.
}
// Meghatározott felhasználó és bejegyzés.
if ( rcp_user_can_access( 42, 100 ) ) {
// A 42-es felhasználó eléri a 100-as bejegyzést.
}
// A ciklusban a $post_id elhagyható.
if ( rcp_user_can_access() ) {
the_content();
}

Megmondja, hogy egy felhasználó megfelel-e egy taxonómiakifejezés (kategória, címke vagy más regisztrált taxonómia) korlátozásainak. A szabályokat az rcp_get_term_restrictions() függvénnyel olvassa. Az adminisztrátorok (manage_options jogosultság) mindig hozzáférnek, a korlátozás nélküli kifejezés pedig mindenkinek true.

  • $user_id (egész): az ellenőrzött felhasználó azonosítója.
  • $term_id (egész): az ellenőrzött kifejezés azonosítója.

Visszatérési érték (logikai): true, ha a felhasználó elérheti a kifejezéshez kötött tartalmat, vagy a kifejezés nem korlátozott. false, ha nem felel meg a „csak fizetős”, a hozzáférési szint vagy a tagsági szint követelményének, vagy ha korlátozás van, de nincs ügyfélrekordja.

$term_id = get_queried_object_id();
if ( rcp_user_can_access_term( get_current_user_id(), $term_id ) ) {
// A felhasználó megnézheti ezt a kategóriaarchívumot.
}

Egy-egy bejegyzés ellenőrzéséhez az rcp_user_can_access() való.

Azt nézi, hogy a felhasználó aktív tagságai közül legalább az egyik a megadott vagy annál magasabb hozzáférési szintet ad-e. Az RCP_Customer::has_access_level() metódust használja.

Ne keverd össze az rcp_user_can_access() függvénnyel: az egy konkrét bejegyzés megtekinthetőségét vizsgálja, ez pedig csak a hozzáférési szintet. Tartalomkorlátozáshoz a bejegyzés szintű függvényt használd.

  • $user_id (egész): a felhasználó azonosítója. Alapérték: 0, vagyis a bejelentkezett felhasználó.
  • $access_level_needed (egész): a szükséges hozzáférési szint, 0 és 10 között. Alapérték: 0.

Visszatérési érték (logikai): true, ha az ügyfélnek van legalább egy megfelelő szintű tagsága. false, ha nincs ügyfélrekord, vagy egyik tagság sem éri el a szintet. A 0 szint teljesítettnek számít, ezért true-t ad akkor is, ha az ügyfélnek nincs tagsága.

if ( rcp_user_has_access( get_current_user_id(), 5 ) ) {
// A felhasználó hozzáférési szintje legalább 5.
}
// A 0 szint a tagság nélküli felhasználóra is igaz.
if ( rcp_user_has_access( $user_id, 0 ) ) {
// ...
}

Megmondja, hogy a felhasználónak van-e legalább egy aktív tagsága, fizetős vagy ingyenes. Az ügyfélrekordból indul ki, az active és a cancelled állapotú tagságokat vizsgálja tovább, mindegyiket az RCP_Membership::is_active() metódussal. A lemondott tagság a lejárati dátumáig még aktívnak számít.

Összehasonlításul: az rcp_user_has_paid_membership() csak a fizetős vagy próbaidőszakos tagságot veszi figyelembe (ugyanígy az elavult rcp_is_active()).

  • $user_id (egész): a felhasználó azonosítója. Alapérték: 0, vagyis a bejelentkezett felhasználó.

Visszatérési érték (logikai): true, ha van legalább egy aktív tagság. false, ha nincs ügyfél, nincs megfelelő tagság, vagy a tagságok lejártak vagy függőben vannak.

if ( rcp_user_has_active_membership() ) {
// A bejelentkezett felhasználónak van aktív tagsága.
}
$user_id = 12;
if ( rcp_user_has_active_membership( $user_id ) ) {
// A 12-es felhasználónak van aktív tagsága.
}

Megmondja, hogy a felhasználónak van-e legalább egy aktív, fizetős tagsága. Alapértelmezés szerint a próbaidőszakos tagság is fizetősnek számít. Az elavult rcp_is_active() belül ezt a függvényt hívja.

A függvény a felhasználóhoz tartozó ügyfél RCP_Customer::has_paid_membership() metódusát használja. A lemondott tagság is adhat true eredményt, ha a szint fizetős, és a tagság hozzáférési ideje még tart.

  • $user_id (egész): az ellenőrzött felhasználó azonosítója. Alapérték: 0, vagyis a bejelentkezett felhasználó.

Visszatérési érték (logikai): true, ha az ügyfélnek van legalább egy aktív fizetős tagsága (a próbaidőszak is fizetősnek számít). false, ha nincs ügyfél, csak ingyenes tagságai vannak, vagy egy fizetős sem aktív.

if ( rcp_user_has_paid_membership( get_current_user_id() ) ) {
// Fizetős vagy próbaidőszakos tag.
}
if ( ! rcp_user_has_paid_membership( $user_id ) && rcp_user_has_free_membership( $user_id ) ) {
// Csak aktív ingyenes tag.
}

Megmondja, hogy az ügyfélnek van-e legalább egy expired (lejárt) állapotú tagságrekordja. Nem azonos az elavult rcp_is_expired() ellenőrzéssel: egy felhasználónak lehet egyszerre aktív és egy korábbi, lejárt tagsága is, és ilyenkor is true az eredmény.

  • $user_id (egész): az ellenőrzött felhasználó azonosítója. Alapérték: 0, vagyis a bejelentkezett felhasználó.

Visszatérési érték (logikai): true, ha van lejárt tagság. false, ha nincs ügyfél vagy nincs lejárt tagságrekord.

if ( rcp_user_has_expired_membership( $user_id ) ) {
// Az ügyfélnek legalább egy lejárt tagsága van.
}

Egy konkrét tagság ellenőrzéséhez töltsd be az rcp_get_membership() függvénnyel, és használd a $membership->is_expired() metódust.

Megmondja, hogy az ügyfélnek van-e legalább egy ingyenes tagsága, amelynek az állapota active. A függvény az active állapotú tagságokat kérdezi le, és true-t ad, ha van köztük olyan, amelyik nem fizetős (az RCP_Membership::is_paid() hamis).

Nem azonos az rcp_user_has_active_membership() függvénnyel: egy lemondott, de még a hozzáférési időszakán belüli ingyenes tagság ott aktívnak számíthat, itt viszont nem.

  • $user_id (egész): az ellenőrzött felhasználó azonosítója. Alapérték: 0, vagyis a bejelentkezett felhasználó.

Visszatérési érték (logikai): true, ha van active állapotú ingyenes tagság. false, ha nincs ügyfél, nincs active tagság, vagy az összes active tagság fizetős.

if ( rcp_user_has_free_membership() ) {
// A bejelentkezett felhasználónak aktív, ingyenes tagsága van.
}
if ( rcp_user_has_active_membership( $user_id ) && ! rcp_user_has_paid_membership( $user_id ) ) {
// Aktív tag, de nem fizetős szinten.
}
// Lehet igaz akkor is, ha az rcp_user_has_free_membership() hamis:
if ( rcp_user_has_active_membership( $user_id ) ) {
// A felhasználó aktív, vagy lemondott, de még le nem járt tagság révén fér hozzá.
}

Megmondja, hogy a felhasználónak van-e legalább egy éppen próbaidőszakban lévő tagsága. Betölti a felhasználó ügyfélrekordját, és minden tagságot megvizsgál az RCP_Membership::is_trialing() metódussal.

  • $user_id (egész): a felhasználó azonosítója. Alapérték: 0, vagyis a bejelentkezett felhasználó.

Visszatérési érték (logikai): true, ha legalább egy tagság próbaidőszakban van. false, ha nincs ügyfél vagy nincs próbaidőszakos tagság.

if ( rcp_is_trialing() ) {
// A bejelentkezett felhasználó próbaidőszakban van.
}
$membership = rcp_get_membership( 456 );
if ( $membership && $membership->is_trialing() ) {
// A 456-os tagság próbaidőszakban van.
}

Elavult (a bővítmény 3.0-s változata óta). Új lejárati dátumot állít be egy felhasználónak. Új kódban egy tagságrekordon az RCP_Membership::set_expiration_date() metódust használd; a lejárati dátum lekérdezéséhez az rcp_get_expiration_date() való.

  • $user_id (egész, nem kötelező): a felhasználó azonosítója. A 0 a bejelentkezett felhasználót jelenti.
  • $new_date (szöveg): az új lejárati dátum MySQL-formátumban, például ÉÉÉÉ-HH-NN ÓÓ:PP:MM.

Visszatérési érték (logikai): true, ha a dátum frissült, különben false.

Frissít egy meglévő tagságrekordot az adatbázisban. Betölti a tagságot az rcp_get_membership() függvénnyel, és meghívja rajta az RCP_Membership::update() metódust. Ha már van RCP_Membership példányod, közvetlenül is hívhatod: $membership->update( $data ).

Ha a művelettől e-mail-küldést, átjáróbeli előfizetés-módosítást vagy a bővítmény saját eseményeit is várod, a nyers adatbázismezők átírása helyett használd az RCP_Membership megfelelő metódusát: activate(), renew(), cancel(), expire(), set_expiration_date().

  • $membership_id (egész): a frissítendő tagság azonosítója.
  • $data (tömb): a módosítandó oszlopok, csak azokat add meg, amelyeket változtatni szeretnél. A támogatott kulcsok megegyeznek az rcp_add_membership() kulcsaival:
    • customer_id, user_id, object_id, object_type
    • currency, initial_amount, recurring_amount
    • created_date, trial_end_date, renewed_date, cancellation_date, expiration_date
    • auto_renew, times_billed, maximum_renewals, status
    • gateway, gateway_customer_id, gateway_subscription_id
    • signup_method, subscription_key, notes, upgraded_from, disabled

Tudnivalók:

  • expiration_date: MySQL-dátum-idő szöveg, vagy none az örökös (nem lejáró) tagsághoz.
  • status: pending, active, cancelled vagy expired. A régi free érték active-ra változik. Ha az active beállítás sikerül, a tagsági szint szerepkörét is hozzárendeli a felhasználóhoz.
  • notes: a tárolt megjegyzésmezőt írja felül. Ha meglévő szöveg megtartásával szeretnél hozzáfűzni, használd az RCP_Membership::add_note() metódust.
  • Egyes mezők (például status, expiration_date, az átjáró azonosítói) változásakor a bővítmény automatikus adminisztrátori megjegyzést is fűz a tagsághoz.

Visszatérési érték (logikai): true, ha a frissítés sikerült, false, ha érvénytelen a tagság azonosítója vagy adatbázishiba történt.

Lejárat meghosszabbítása a 123-as tagságon:

$updated = rcp_update_membership( 123, array(
'expiration_date' => '2026-12-31 23:59:59',
) );

Átjáróazonosítók mentése sikeres fizetés után:

rcp_update_membership( 123, array(
'gateway' => 'stripe',
'gateway_customer_id' => 'cus_abc123',
'gateway_subscription_id' => 'sub_xyz789',
'auto_renew' => true,
) );

Állapot aktívra állítása (például kézi fizetés után). Első aktiváláskor, üdvözlő e-mail küldéséhez inkább a tagság activate() metódusát használd:

$membership = rcp_get_membership( 123 );
if ( $membership ) {
rcp_update_membership( 123, array(
'status' => 'active',
) );
}

Lemondáshoz, lemondási e-mail és események kiváltásával, a $membership->cancel() metódust használd, ne csak a status értékét írd át cancelled-re.

Frissít egy meglévő kedvezménykódot az azonosítója alapján. Csak azokat a mezőket add meg, amelyeket módosítani akarsz. Ha a code mezőt frissíted, a kód kisbetűsen tárolódik. A membership_level_ids mentés előtt szerializálódik.

Események: az rcp_pre_edit_discount a mentés előtt, az rcp_edit_discount a frissítés után fut le.

  • $discount_id (egész): a kedvezmény azonosítója.
  • $args (tömb): a módosítandó mezők, ugyanazok a kulcsok, mint az rcp_add_discount() függvénynél; részleges frissítés is rendben van.

Visszatérési érték: true siker esetén, WP_Error érvénytelen azonosító, érvénytelen összeg vagy sikertelen frissítés esetén.

$result = rcp_update_discount(
$discount_id,
array(
'status' => 'active',
'max_uses' => 100,
)
);
if ( is_wp_error( $result ) ) {
// Hiba kezelése.
}

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások