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.
rcp_is_restricted_content()
Szekció neve “rcp_is_restricted_content()”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ékfalse-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.}Az rcp_is_restricted_content szűrő
Szekció neve “Az rcp_is_restricted_content szűrő”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.
rcp_user_can_access()
Szekció neve “rcp_user_can_access()”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$postbejegyzését használja. Ha nem állapítható meg bejegyzés, a függvénytrue-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();}rcp_user_can_access_term()
Szekció neve “rcp_user_can_access_term()”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ó.
rcp_user_has_access()
Szekció neve “rcp_user_has_access()”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és10kö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 ) ) { // ...}rcp_user_has_active_membership()
Szekció neve “rcp_user_has_active_membership()”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.}rcp_user_has_paid_membership()
Szekció neve “rcp_user_has_paid_membership()”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.}rcp_user_has_expired_membership()
Szekció neve “rcp_user_has_expired_membership()”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.
rcp_user_has_free_membership()
Szekció neve “rcp_user_has_free_membership()”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á.}rcp_is_trialing()
Szekció neve “rcp_is_trialing()”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.}rcp_set_expiration_date()
Szekció neve “rcp_set_expiration_date()”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. A0a 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.
rcp_update_membership()
Szekció neve “rcp_update_membership()”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 azrcp_add_membership()kulcsaival:customer_id,user_id,object_id,object_typecurrency,initial_amount,recurring_amountcreated_date,trial_end_date,renewed_date,cancellation_date,expiration_dateauto_renew,times_billed,maximum_renewals,statusgateway,gateway_customer_id,gateway_subscription_idsignup_method,subscription_key,notes,upgraded_from,disabled
Tudnivalók:
expiration_date: MySQL-dátum-idő szöveg, vagynoneaz örökös (nem lejáró) tagsághoz.status:pending,active,cancelledvagyexpired. A régifreeértékactive-ra változik. Ha azactivebeá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 azRCP_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.
rcp_update_discount()
Szekció neve “rcp_update_discount()”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 azrcp_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: