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”rcp_reminder_notice_periods
Szekció neve “rcp_reminder_notice_periods”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+2daysa lejárat előtti két napot, a-1weeka 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' );rcp_reminder_subscription_args
Szekció neve “rcp_reminder_subscription_args”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 azrcp_get_memberships()függvénynél.$period(szöveg): az emlékeztető időszaka, például a+1 monthaz 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) vagyexpiration(lejárat).
Regisztráció
Szekció neve “Regisztráció”rcp_require_email_verification
Szekció neve “rcp_require_email_verification”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 );rcp_return_url
Szekció neve “rcp_return_url”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.
rcp_validate_username
Szekció neve “rcp_validate_username”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 );rcp_verification_redirect_url
Szekció neve “rcp_verification_redirect_url”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 );rcp_show_subscription_level
Szekció neve “rcp_show_subscription_level”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 (truevagyfalse).$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 );Korlátozott tartalom
Szekció neve “Korlátozott tartalom”rcp_restricted_message
Szekció neve “rcp_restricted_message”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' );rcp_restricted_content_message
Szekció neve “rcp_restricted_content_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_messageazrcp_format_teaser()hívásakor fut, amely az üzenet elé a kivonatot is teheti; - az
rcp_restricted_content_messageazrcp_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' );rcp_restricted_post_redirect_url
Szekció neve “rcp_restricted_post_redirect_url”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.
Tagság állapota
Szekció neve “Tagság állapota”rcp_set_membership_status_value
Szekció neve “rcp_set_membership_status_value”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,expiredstb.).$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.
rcp_set_status
Szekció neve “rcp_set_status”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 );Stripe Checkout
Szekció neve “Stripe Checkout”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.
rcp_stripe_checkout_data
Szekció neve “rcp_stripe_checkout_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' );rcp_stripe_checkout_form_data
Szekció neve “rcp_stripe_checkout_form_data”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: