Függvények: korlátozott tartalmak lekérdezése
Az rcp_get_paid_posts(), rcp_get_post_ids_assigned_to_restricted_terms(), rcp_get_post_restrictions(), rcp_get_restricted_post_ids() és rcp_get_restricted_post_types() függvények.
Egyedi kódhoz tartozó függvények, ezért a bevezetésükhöz érdemes fejlesztő segítségét kérni. Egyik sem azt mondja meg, hogy az adott felhasználó láthatja-e a tartalmat: ahhoz az rcp_user_can_access() való.
rcp_get_paid_posts()
Szekció neve “rcp_get_paid_posts()”Azoknak a közzétett bejegyzéseknek az azonosítóit adja vissza, amelyeknél a korlátozás dobozban be van kapcsolva a „csak fizetős” jelölő (a _is_paid bejegyzés-meta értéke 1). Azokat nem tartalmazza, amelyek csak egy egész bejegyzéstípusra érvényes szabály miatt fizetősek. Ezekhez bejegyzésenként az rcp_is_paid_content() függvény kell.
Paraméter nincs. Visszatérési érték: bejegyzésazonosítók tömbje, üres tömb, ha nincs találat.
$paid_post_ids = rcp_get_paid_posts();
foreach ( $paid_post_ids as $post_id ) { // Mindegyik közzétett bejegyzésnél be van állítva a _is_paid meta.}Kapcsolódik hozzá a paid_posts rövidkód és az rcp_is_paid_content() függvény.
rcp_get_post_ids_assigned_to_restricted_terms()
Szekció neve “rcp_get_post_ids_assigned_to_restricted_terms()”Azoknak a bejegyzéseknek az azonosítóit adja vissza, amelyek olyan taxonómiafogalomhoz (kategória, címke stb.) tartoznak, amelyhez valódi korlátozás van mentve az rcp_restricted_meta mezőben. Kihagyja az üres metájú fogalmakat és azokat, amelyeknél csak a régi „None” hozzáférési szint áll (az üres régi metát el is távolíthatja).
Minden nyilvános taxonómiát végigjár. Az eredményt egy napig az rcp_post_ids_assigned_to_restricted_terms néven gyorsítótárazza, és törli, ha a bejegyzések vagy a fogalmak korlátozása megváltozik (ugyanakkor, mint az rcp_get_restricted_post_ids() gyorsítótára).
Paraméter nincs. Visszatérési érték: bejegyzésazonosítók tömbje, legalább egy korlátozott fogalommal.
$term_restricted = rcp_get_post_ids_assigned_to_restricted_terms();
foreach ( $term_restricted as $post_id ) { $restrictions = rcp_get_term_restrictions( /* fogalom azonosítója */ );}Egy adott fogalom beállításait az rcp_get_term_restrictions(), a felhasználó hozzáférését az rcp_user_can_access_term() adja meg.
rcp_get_post_restrictions()
Szekció neve “rcp_get_post_restrictions()”Egy bejegyzés tagsági és hozzáférési követelményeit adja vissza tömbként.
Ha a bejegyzéstípushoz van egész típusra érvényes korlátozás, azt kapod. Ha nincs, a bejegyzés saját korlátozás dobozának értékeit. A taxonómiafogalmak korlátozása nem szerepel benne, azt fogalmanként az rcp_get_term_restrictions() adja.
$post_id(egész): a bejegyzés azonosítója.
Visszatérési érték (tömb), a kulcsok és az alapértékek:
| Kulcs | Jelentés |
|---|---|
membership_levels |
Üres szöveg, any, any-paid, vagy tagsági szint-azonosítók tömbje. |
access_level |
A szükséges hozzáférési szint. Alapérték: 0. |
user_level |
A szükséges WordPress-szerepkörök, jogosultságok tömbje. Alapérték: üres tömb. |
$restrictions = rcp_get_post_restrictions( get_the_ID() );
if ( ! empty( $restrictions['membership_levels'] ) ) { // A bejegyzéshez meghatározott tagsági szint(ek), vagy bármely/bármely fizetős tagság kell.}$restrictions = rcp_get_post_restrictions( 100 );$level = isset( $restrictions['access_level'] ) ? (int) $restrictions['access_level'] : 0;rcp_get_restricted_post_ids()
Szekció neve “rcp_get_restricted_post_ids()”Azoknak a közzétett bejegyzéseknek az azonosítóit adja vissza, amelyeknek van bejegyzésszintű korlátozásuk: fizetős jelölő, tagsági szint, hozzáférési szint vagy régi szintmező. Azokat nem listázza, amelyeket csak taxonómiafogalom vagy egész bejegyzéstípusra érvényes szabály korlátoz.
Az eredmény az rcp_restricted_post_ids átmeneti tárolóban (transient) egy napig gyorsítótárazva van. A bővítmény törli, amikor bejegyzést mentesz, kukába teszel vagy visszaállítasz (a fogalmakhoz rendelt bejegyzések gyorsítótárával együtt).
Paraméter nincs. Visszatérési érték: bejegyzésazonosítók tömbje.
$restricted_ids = rcp_get_restricted_post_ids();
if ( in_array( get_the_ID(), $restricted_ids, true ) ) { // Ennek a bejegyzésnek van korlátozás dobozban mentett szabálya.}Érdemes összevetni az rcp_get_post_ids_assigned_to_restricted_terms() és az rcp_is_restricted_content() függvénnyel.
rcp_get_restricted_post_types()
Szekció neve “rcp_get_restricted_post_types()”Az összes olyan bejegyzéstípust visszaadja, amelyhez egész típusra érvényes korlátozás van mentve a Restrict Content → Beállítások oldalon (az egész bejegyzéstípus korlátozása). Az adat az rcp_restricted_post_types opcióban van.
Ez beállítási adat, nem felhasználónkénti hozzáférés-ellenőrzés. Egy típus korlátozottságát az rcp_is_restricted_post_type( $post_type ), a szabályait az rcp_get_post_type_restrictions( $post_type ) adja meg. A bejegyzésenkénti szabályok külön vannak, azokhoz az rcp_get_post_restrictions() való.
Paraméter nincs. Visszatérési érték (tömb): a kulcsok a bejegyzéstípusok azonosítói, az értékek a korlátozás beállításai (tagsági szintek, hozzáférési szint, fizetős jelölő és hasonlók). Üres tömb, ha nincs beállítva semmi.
$restricted = rcp_get_restricted_post_types();
if ( isset( $restricted['post'] ) ) { // A „post” típusra érvényes korlátozás van.}if ( rcp_is_restricted_post_type( 'page' ) ) { $rules = rcp_get_post_type_restrictions( 'page' );}rcp_get_term_restrictions()
Szekció neve “rcp_get_term_restrictions()”Egy taxonómiafogalomra (kategória, címke vagy más, a bővítményben engedélyezett taxonómia) mentett korlátozási beállításokat adja vissza. Az rcp_restricted_meta fogalom-metát olvassa, és ha az nincs, a régi rcp_category_meta_{term_id} opcióra esik vissza.
Csak a beállítást adja vissza, azt nem, hogy a felhasználó megfelel-e a szabályoknak. Ahhoz az rcp_user_can_access_term() való.
$term_id(egész): a fogalom azonosítója.
Visszatérési érték (tömb), a gyakori kulcsok (ha be vannak állítva):
| Kulcs | Jelentés |
|---|---|
paid_only |
Fizetős tagság kell. |
access_level |
A legkisebb hozzáférési szint (egész). Kimarad, ha az értéke none. |
subscriptions |
A fogalomhoz engedélyezett tagsági szint-azonosítók tömbje. |
Üres tömb, ha a fogalomnak nincs korlátozása.
$restrictions = rcp_get_term_restrictions( $term_id );
if ( ! empty( $restrictions['paid_only'] ) ) { // A fogalom csak fizetős tagoknak szól.}rcp_has_post_restrictions()
Szekció neve “rcp_has_post_restrictions()”Megmondja, hogy a bejegyzésnek van-e a korlátozás dobozban mentett beállítása (csak a bejegyzés saját metaadata számít). Nem veszi figyelembe az egész bejegyzéstípusra érvényes szabályokat és a taxonómiafogalmak korlátozását. Ha bármilyen korlátozás érdekel, az rcp_is_restricted_content(), a nyers követelménytömb pedig az rcp_get_post_restrictions() függvény adja.
Ezeket nézi: a „csak fizetős” jelölőt (_is_paid), a tagsági szinteket (rcp_get_content_subscription_levels()), a WordPress-szerepköröket (rcp_user_level) és a hozzáférési szintet (rcp_access_level), ha be vannak állítva, és nem „none” értékűek.
$post_id(egész): a bejegyzés azonosítója. Üres vagy nem számérték eseténfalsea válasz.
Visszatérési érték (logikai): true, ha a bejegyzésnek van saját korlátozása, különben false.
if ( rcp_has_post_restrictions( get_the_ID() ) ) { // A bejegyzésnek van bejegyzésszintű korlátozása.}if ( rcp_is_restricted_content( $post_id ) && ! rcp_has_post_restrictions( $post_id ) ) { // A korlátozás a bejegyzéstípusból és/vagy a fogalmakból jön, nem a bejegyzés dobozából.}rcp_is_paid_content()
Szekció neve “rcp_is_paid_content()”Megmondja, hogy a bejegyzés „csak fizetős”-e, vagyis fizetős tagság kell hozzá, az ingyenes szint nem elég. Először az egész bejegyzéstípusra érvényes fizetős szabályt nézi, utána a bejegyzés _is_paid metaadatát a korlátozás dobozból.
Nem mondja meg, hogy a bejegyzés egyáltalán korlátozott-e, és azt sem, hogy az aktuális felhasználó megnézheti-e. Ezekhez az rcp_is_restricted_content() és az rcp_user_can_access() való.
$post_id(egész): a bejegyzés azonosítója. Ha üres vagy nem egész szám, az aktuális bejegyzést (get_the_ID()) használja.
Visszatérési érték (logikai): true, ha csak fizetős; különben false.
if ( rcp_is_paid_content( get_the_ID() ) ) { // Csak fizetős tagoknak.}Az rcp_is_paid_content szűrő
Szekció neve “Az rcp_is_paid_content szűrő”Ezen a néven szűrő is van: az rcp_is_paid_content szűrővel felülbírálhatod, hogy egy bejegyzés fizetős tartalomnak számít-e.
| Paraméter | Jelentés |
|---|---|
$is_paid (logikai) |
Aktív, fizetős előfizetést igényel-e a bejegyzés. |
$post_id (egész) |
A vizsgált bejegyzés azonosítója. |
add_filter( 'rcp_is_paid_content', function ( $is_paid, $post_id ) { if ( 'tanfolyam' === get_post_type( $post_id ) ) { return true; } return $is_paid;}, 10, 2 );Készült: