Tovább a tartalomhoz

Akciók és szűrők: emlékeztetők, korlátozott tartalom üzenete, átirányítás, tagság állapota, Stripe

Tizenkét akció és szűrő: az emlékeztető e-mailek időpontjai és lekérdezése, e-mail-ellenőrzés, a korlátozott tartalom üzenete és átirányítása, regisztráció utáni cím, állapotváltás, szintek listája és a Stripe Checkout adatai.

Ez a fejezet a hookfejezetek sorát folytatja. A hookok teljes listája az Akciók és szűrők áttekintő listája fejezetben van. Az itt szereplő kód egyedi fejlesztés: a bővítmény támogatása nem terjed ki rá, bonyolultabb feladathoz érdemes fejlesztőt bevonni.

Az akciót add_action, a szűrőt add_filter hívással csatlakoztatod. Ha a függvényednek több paramétert kell kapnia, a prioritás után add meg a paraméterek számát is.

Lejárati és megújítási emlékeztetők

Szekció neve “Lejárati és megújítási emlékeztetők”

Szűrő. A lejárati és megújítási emlékeztetők beállításánál választható időszakok listáját módosítja (például „egy hónappal előtte”, „két nappal előtte”).

  • $periods (tömb): az elérhető időszakok. A kulcs PHP által értelmezhető időformátum: a +2days a lejárat előtti két napot, a -1week a lejárat utáni egy hetet jelenti. Az érték a felületen látszó felirat.

Az alapértelmezett időszakok:

Kulcs Jelentés
today a megújítás vagy lejárat napján
+1day … +6days egy-hat nappal előtte
+1week, +2weeks, +3weeks egy, két, három héttel előtte
+1month, +2months, +3months egy, két, három hónappal előtte
-1day, -2days, -3days egy-három nappal a lejárat után
-1week, -2weeks egy, két héttel a lejárat után
-1month, -2months, -3months egy, két, három hónappal a lejárat után
  • Paraméter: $periods.

Példa: új időszak, a lejárat utáni negyedik nap.

function mytheme_rcp_reminder_four_days_after( $periods ) {
$periods['-4days'] = __( 'Négy nappal a lejárat után', 'mytheme' );
return $periods;
}
add_filter( 'rcp_reminder_notice_periods', 'mytheme_rcp_reminder_four_days_after' );

Szűrő. Azoknak a tagságoknak a lekérdezési argumentumait módosítja, amelyeknek az emlékeztető e-mailt küldi a bővítmény.

  • $args (tömb): a lekérdezés argumentumai. Az elfogadott értékek ugyanazok, mint az rcp_get_memberships() függvénynél.
  • $period (szöveg): az emlékeztető időszaka, például a +1 month az egy hónappal a lejárat előtti emlékeztetőt jelenti.
  • $type (szöveg): az emlékeztető fajtája, renewal (megújítás) vagy expiration (lejárat).

Szűrő. Eldönti, kell-e e-mail-cím ellenőrzése a tagsági regisztráció feldolgozásakor.

  • $required (logikai): kell-e az ellenőrzés ennél a regisztrációnál.
  • $posted (tömb): a regisztrációs űrlapról elküldött értékek.
  • $user_id (egész): a regisztráló felhasználó azonosítója.
  • $price (szám): a tagsági szint ára, amelyre a felhasználó regisztrál.

Példa: az ellenőrzés csak 50 egységnél olcsóbb szintnél kötelező, az ennél drágább szintnél nem.

function mytheme_rcp_require_email_verification( $required, $posted, $user_id, $price ) {
if ( $price >= 50 ) {
return false;
}
return true;
}
add_filter( 'rcp_require_email_verification', 'mytheme_rcp_require_email_verification', 10, 4 );

Szűrő. Azt a címet módosítja, ahová a felhasználó a sikeres regisztráció után kerül.

  • $redirect (szöveg): a cím, ahová a bővítmény átirányít.
  • $user_id (egész): a regisztráló felhasználó azonosítója.

Szűrő. Azt dönti el, hogy a megadott felhasználónév érvényes-e. A bővítmény az új felhasználói fiók létrehozásakor, a regisztráció közben futtatja. Ha az érték false, hibaüzenet jelenik meg a regisztrációs űrlapon.

  • $is_valid (logikai): érvényes-e a megadott felhasználónév.
  • $username (szöveg): a vásárló által megadott felhasználónév.

Példa: az „admin” kezdetű felhasználónevet nem engedjük regisztrálni.

function mytheme_rcp_validate_username( $is_valid, $username ) {
if ( 0 === strpos( strtolower( $username ), 'admin' ) ) {
return false;
}
return $is_valid;
}
add_filter( 'rcp_validate_username', 'mytheme_rcp_validate_username', 10, 2 );

Szűrő. Azt a címet módosítja, ahová a tag az e-mail-címe megerősítése után kerül. Alapesetben ez a Restrict → Settings → General oldalon megadott Fiókoldal.

  • $redirect_url (szöveg): az alapértelmezett cím, vagyis a fiókoldal címe.
  • $member (RCP_Member): az e-mail-címét megerősítő felhasználó tagobjektuma.
function mytheme_rcp_verification_redirect_url( $redirect_url, $member ) {
return home_url( '/koszonjuk/' );
}
add_filter( 'rcp_verification_redirect_url', 'mytheme_rcp_verification_redirect_url', 10, 2 );

Szűrő. Eldönti, hogy egy tagsági szint megjelenjen-e a [register_form] rövidkód szintválasztó listájában.

  • $show (logikai): megjelenjen-e a szint (true vagy false).
  • $level_id (egész): a most vizsgált szint azonosítója.
  • $user_id (egész): az űrlapot néző felhasználó azonosítója, bejelentkezés nélkül 0.

Példa: az 1-es szint nem látszik annak, aki a 3-as szinten van.

function mytheme_rcp_show_subscription_level( $show, $level_id, $user_id ) {
if ( 1 == $level_id && 3 == rcp_get_subscription_id( $user_id ) ) {
$show = false;
}
return $show;
}
add_filter( 'rcp_show_subscription_level', 'mytheme_rcp_show_subscription_level', 10, 3 );

Szűrő. A bejegyzésnél megjelenő korlátozási üzenetet módosítja, ha a látogatónak nincs hozzáférése. Ezt a szűrőt az rcp_format_teaser() függvény hívja, amely az üzenet elé szükség esetén a kivonatot is beteszi.

  • $message (szöveg): az ingyenes vagy fizetett korlátozás üzenete, a bejegyzés fajtájától függően. Ez a Korlátozás → Beállítások → Általános oldalon megadott szöveg, vagy az alapértelmezett, például „Ez a tartalom csak előfizetőknek érhető el”.

Példa: más üzenet fizetős és ingyenes tartalomhoz.

function mytheme_rcp_restricted_message( $message ) {
global $post;
if ( rcp_is_paid_content( $post->ID ) ) {
$message = __( 'Ehhez fizetett tagság kell.', 'mytheme' );
} else {
$message = __( 'Ehhez ingyenes tagság kell.', 'mytheme' );
}
return $message;
}
add_filter( 'rcp_restricted_message', 'mytheme_rcp_restricted_message' );

Szűrő. A „ez a tartalom korlátozott” üzenetet módosítja, amelyet a jogosulatlan látogatók látnak. Az rcp_restricted_message szűrőhöz hasonló, de van különbség:

  • az rcp_restricted_message az rcp_format_teaser() hívásakor fut, amely az üzenet elé a kivonatot is teheti;
  • az rcp_restricted_content_message az rcp_get_restricted_content_message() hívásakor fut, amelynek egyetlen feladata az üzenet lekérése.

A függvényben elérhető a globális $post, így az üzenet a bejegyzés azonosítójától vagy típusától függően is változtatható.

  • $message (szöveg): a megjelenő üzenet.

Példa: egyedi üzenet egy saját bejegyzéstípushoz.

function mytheme_rcp_restricted_content_message( $message ) {
global $post;
if ( ! $post instanceof WP_Post ) {
return $message;
}
if ( 'my_post_type' === $post->post_type ) {
$message = __( 'Egyedi üzenet az egyedi bejegyzéstípushoz.', 'mytheme' );
}
return $message;
}
add_filter( 'rcp_restricted_content_message', 'mytheme_rcp_restricted_content_message' );

Szűrő. Azt a címet módosítja, ahová a jogosulatlan látogatót a bővítmény átirányítja, ha korlátozott bejegyzést akar megnyitni.

  • $redirect_url (szöveg): az átirányítás címe.
  • $member (RCP_Member): az átirányított felhasználó tagobjektuma.
  • $post (WP_Post): a bejegyzés, amelyet a felhasználó meg akart nyitni.

Szűrő. Akkor fut, amikor egy tagság állapota változni készül, és az új állapot értékét az adatbázisba írás előtt módosíthatod.

  • $new_status (szöveg): a beállítandó új állapot (active, expired stb.).
  • $old_status (szöveg): a változás előtti állapot. Pontosan ez a jelenlegi állapot, mert a módosítás még nem történt meg.
  • $membership_id (egész): a módosított tagság azonosítója.
  • $membership (RCP_Membership): a tagság objektuma.

Akció. Elavult, helyette az rcp_transition_membership_status akciót használd. Akkor fut, amikor a felhasználó állapota beáll (függőben, ingyenes, aktív, lejárt, lemondott).

  • $new_status (szöveg): az új állapot (pending, free, active, expired, canceled).
  • $user_id (egész): az érintett felhasználó azonosítója.
  • $old_status (szöveg): az előző állapot.
  • $member (RCP_Member): a felhasználó tagobjektuma.

Ugyanekkor lefut egy dinamikus akció is, rcp_set_status_{$new_status} néven (például rcp_set_status_active). Ugyanazt tudja, de az új állapot a hook nevében van, nem paraméterben, ezért eggyel kevesebb paramétert kap ($user_id, $old_status, $member). A két példa ugyanazt éri el:

function mytheme_rcp_set_status( $new_status, $user_id, $old_status, $member ) {
if ( 'active' == $new_status ) {
// Ide jön a kód, amely az „active” állapotnál fut.
}
}
add_action( 'rcp_set_status', 'mytheme_rcp_set_status', 10, 4 );
function mytheme_rcp_set_status_active( $user_id, $old_status, $member ) {
// Ide jön a kód, amely az „active” állapotnál fut.
}
add_action( 'rcp_set_status_active', 'mytheme_rcp_set_status_active', 10, 3 );

Az rcp_set_status_active jó választás, ha a tagság aktiválása után azonnal kell kódot futtatnod. Figyelj rá, hogy megújításnál és szintváltásnál is lefuthat. Ha a kódnak csak egyszer szabad lefutnia, jelöld meg felhasználói metaadattal, hogy már megtörtént:

function mytheme_rcp_set_status_active( $user_id, $old_status, $member ) {
$has_completed = get_user_meta( $user_id, 'rcp_has_completed_some_custom_action', true );
if ( $has_completed ) {
// Ezt a felhasználónál már elvégeztük.
return;
}
// Ide jön az egyszer futó kód.
update_user_meta( $user_id, 'rcp_has_completed_some_custom_action', true );
}
add_action( 'rcp_set_status_active', 'mytheme_rcp_set_status_active', 10, 3 );

A két szűrő ugyanazt csinálja, de más rövidkódhoz tartozik: ha a [register_form_stripe] rövidkódot használod, az rcp_stripe_checkout_data kell, ha a szokásos [register_form] rövidkódot, az rcp_stripe_checkout_form_data.

Szűrő. A Stripe Checkout argumentumait módosítja, ha a [register_form_stripe] rövidkódot használod. Segítségével a beállítási lehetőségek átírhatók.

  • $data (tömb): a Stripe-nak küldött alapértelmezett argumentumok.

Példa: a számlázási cím bekérése.

function mytheme_rcp_stripe_checkout_form_billing_address( $data ) {
$data['data-billing-address'] = true;
return $data;
}
add_filter( 'rcp_stripe_checkout_data', 'mytheme_rcp_stripe_checkout_form_billing_address' );

Szűrő. A Stripe Checkout argumentumait módosítja, ha a szokásos [register_form] rövidkódot használod.

  • $data (tömb): a Stripe-nak küldött alapértelmezett beállítások.

Példa: a számlázási cím bekérése.

function mytheme_rcp_stripe_checkout_billing_address( $data ) {
$data['billing-address'] = true;
return $data;
}
add_filter( 'rcp_stripe_checkout_form_data', 'mytheme_rcp_stripe_checkout_billing_address' );

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