Akciók és szűrők: Stripe-argumentumok, regisztráció, állapotváltás, fizetés, profil
Tizenkét akció és szűrő paraméterekkel és példákkal: a Stripe-hívások argumentumai, a gateway-nek küldött előfizetési adat, sikeres regisztráció, tagság- és fizetésállapot-váltás, lejárt tagság szűrője, profilmentés.
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.
Stripe
Szekció neve “Stripe”rcp_stripe_checkout_subscription_data
Szekció neve “rcp_stripe_checkout_subscription_data”Szűrő. A Stripe Checkoutnak átadott előfizetési adatokat módosítja. A szűrt érték egy tömb: a kulcs a tagsági szint azonosítója, az érték pedig egy újabb tömb a szint nevével (name), leírásával (description) és a fizetőgomb feliratával (panelLabel). A felirat alapértelmezetten „Regisztráció”, próbaidőszaknál „Próba indítása”.
A példa minden szintnél átírja a gomb feliratát:
function pelda_rcp_stripe_checkout_subscription_data( $subscriptions ) { foreach ( $subscriptions as $sub_id => $sub_data ) { $subscriptions[ $sub_id ]['panelLabel'] = __( 'Regisztráció vagy megújítás', 'rcp' ); }
return $subscriptions;}add_filter( 'rcp_stripe_checkout_subscription_data', 'pelda_rcp_stripe_checkout_subscription_data' );rcp_stripe_create_payment_intent_args
Szekció neve “rcp_stripe_create_payment_intent_args”Szűrő. A Stripe fizetési szándék (Payment Intent) létrehozásakor küldött argumentumokat módosítja. Az elfogadott argumentumokat a Stripe API leírása sorolja fel.
| Paraméter | Típus | Jelentés |
|---|---|---|
$intent_args |
tömb | A fizetési szándék argumentumai az API-kéréshez. |
$gateway |
RCP_Payment_Gateway_Stripe |
A fizetési átjáró objektuma. |
A példa megakadályozza, hogy a kártya adatai a Stripe-ban későbbi használatra elmentődjenek:
/** * Ne mentse el a kártyaadatokat a Stripe-ban későbbi használatra. * * @param array $intent_args * @param RCP_Payment_Gateway_Stripe $stripe_gateway * * @return array */function pelda_rcp_ne_mentse_a_kartyat( array $intent_args, RCP_Payment_Gateway_Stripe $stripe_gateway ) { unset( $intent_args['setup_future_usage'] );
return $intent_args;}add_filter( 'rcp_stripe_create_payment_intent_args', 'pelda_rcp_ne_mentse_a_kartyat', 10, 2 );rcp_stripe_create_subscription_args
Szekció neve “rcp_stripe_create_subscription_args”Szűrő. A Stripe-ban új előfizetés létrehozásakor használt argumentumokat módosítja.
| Paraméter | Típus | Jelentés |
|---|---|---|
$args |
tömb | Az alapértelmezett argumentumok (lásd alább). |
$stripe_gateway |
RCP_Payment_Gateway_Stripe |
A fizetési átjáró objektuma. |
Az $args tömb elemei:
| Elem | Típus | Jelentés |
|---|---|---|
plan |
szöveg | A Stripe-terv azonosítója. |
prorate |
logikai | Jóváírja-e a fel nem használt időt. Ajánlott érték: false, mert az arányosítást a bővítmény maga kezeli. |
metadata |
tömb | Tartalma: rcp_subscription_level_id (a tagsági szint azonosítója, egész szám) és rcp_member_id (a felhasználó azonosítója, egész szám). |
coupon |
szöveg | Csak kedvezménykód használatakor van benne. |
trial_end |
egész szám | A próbaidőszak végének időbélyege. |
A trial_end értéke a bővítmény 3.2-es változatától mást jelent: a kezdeti fizetés mindig egyszeri tranzakcióként történik, és a bővítmény a trial_end paraméterrel adja meg az előfizetés kezdetét, vagyis a következő (első ismétlődő) fizetés napját.
rcp_stripe_customer_create_args
Szekció neve “rcp_stripe_customer_create_args”Szűrő. A Stripe-ügyfélrekord létrehozásakor küldött argumentumokat módosítja. Az elfogadott argumentumokat a Stripe API leírása sorolja fel.
| Paraméter | Típus | Jelentés |
|---|---|---|
$customer_args |
tömb | Az API-kérés argumentumai. |
$gateway |
RCP_Payment_Gateway_Stripe |
A fizetési átjáró objektuma. |
Regisztráció
Szekció neve “Regisztráció”rcp_subscription_data
Szekció neve “rcp_subscription_data”Szűrő. A fizetési átjárónak küldött előfizetési adatokat módosítja. A $subscription_data tömb elemei:
| Elem | Típus | Jelentés |
|---|---|---|
price |
tört szám | A ma fizetendő alapár, a regisztrációs díj nélkül. |
recurring_price |
tört szám | Az ismétlődő fizetés összege. |
discount |
tört szám | A fizetésre alkalmazott kedvezmények összege. |
discount_code |
szöveg | A regisztrációnál használt kedvezménykód. |
fee |
tört szám | A kezdeti árra rakódó díjak összege. |
length |
egész szám | Az előfizetés hossza számmal. |
length_unit |
szöveg | A hossz egysége (day, month, year). |
subscription_id |
egész szám | A tagsági szint azonosítója. |
subscription_name |
szöveg | A tagsági szint neve. |
key |
szöveg | Az előfizetés kulcsa. |
user_id |
egész szám | A regisztráló WordPress-felhasználó azonosítója. |
user_name |
szöveg | A regisztráló felhasználó belépési neve. |
email |
szöveg | A regisztráló felhasználó e-mail-címe. |
currency |
szöveg | A pénznem kódja (például HUF). |
auto_renew |
logikai | Be van-e kapcsolva az automatikus megújítás. |
return_url |
szöveg | A sikeres regisztráció utáni átirányítás címe. |
new_user |
logikai | Létrejött-e új felhasználói fiók a regisztrációhoz. |
trial_duration |
egész szám | A próbaidőszak hossza (0, ha nincs). |
trial_duration_unit |
szöveg | A próbaidőszak egysége (day, month, year). |
trial_eligible |
logikai | Jogosult-e a felhasználó ingyenes próbára. Ha nem, a szint árát azonnal fizetnie kell. |
post_data |
tömb | A regisztrációs űrlapon elküldött összes adat. |
rcp_successful_registration
Szekció neve “rcp_successful_registration”Akció. Akkor fut, amikor a felhasználó feliratkozik egy tagsági szintre. Lefut új regisztrációnál, kézi megújításnál, szintemelésnél és szintcsökkentésnél is, de az automatikus megújításnál nem.
| Paraméter | Típus | Jelentés |
|---|---|---|
$member |
RCP_Member |
A tag objektuma. |
$customer |
RCP_Customer |
Az ügyfél objektuma. |
$membership |
RCP_Membership |
A tagság objektuma. |
A példa extra levelet küld azoknak az új tagoknak, akik az 1., 2. vagy 3. azonosítójú szintre regisztráltak:
/** * Extra követő e-mail küldése az 1., 2. vagy 3. szintre regisztráló tagoknak. * * @param RCP_Member $member * @param RCP_Customer $customer * @param RCP_Membership $membership * * @return void */function pelda_rcp_regisztracio_utan( $member, $customer, $membership ) { // Azok a szintazonosítók, amelyekre a kódnak futnia kell. Írd át a sajátjaidra. $szintek = array( 1, 2, 3 );
// Ha nem ezek valamelyikén van, nem csinál semmit. if ( ! in_array( $membership->get_object_id(), $szintek ) ) { return; }
$subject = __( 'További adatokat kérünk', 'rcp' ); $message = __( 'Ide írd az e-mail szövegét.', 'rcp' );
$emails = new RCP_Emails; $emails->member_id = $member->ID; $emails->send( $member->user_email, $subject, $message );}add_action( 'rcp_successful_registration', 'pelda_rcp_regisztracio_utan', 10, 3 );Tagság állapotának váltása
Szekció neve “Tagság állapotának váltása”rcp_transition_membership_status
Szekció neve “rcp_transition_membership_status”Akció. Minden alkalommal lefut, amikor egy tagság állapota megváltozik.
| Paraméter | Típus | Jelentés |
|---|---|---|
$old_status |
szöveg | A korábbi állapot. |
$new_status |
szöveg | Az új állapot. |
$membership_id |
egész szám | A tagság azonosítója. |
rcp_transition_membership_status_{állapot}
Szekció neve “rcp_transition_membership_status_{állapot}”Akció. Akkor fut le, amikor egy tagság állapota megváltozik, és a hook neve az új állapot azonosítóját tartalmazza. Például:
rcp_transition_membership_status_activercp_transition_membership_status_expiredrcp_transition_membership_status_cancelledrcp_transition_membership_status_pending
| Paraméter | Típus | Jelentés |
|---|---|---|
$old_status |
szöveg | A korábbi állapot. |
$membership_id |
egész szám | A tagság azonosítója. |
Fizetések
Szekció neve “Fizetések”rcp_update_payment
Szekció neve “rcp_update_payment”Akció. Akkor fut, amikor egy fizetést frissíteni készül az adatbázisban. A frissítés előtt lép életbe.
| Paraméter | Típus | Jelentés |
|---|---|---|
$payment_id |
egész szám | A fizetési rekord azonosítója. |
$payment_data |
tömb | A frissítendő adatok. |
rcp_update_payment_status
Szekció neve “rcp_update_payment_status”Akció. Akkor fut, amikor egy fizetés állapota frissül.
| Paraméter | Típus | Jelentés |
|---|---|---|
$status |
szöveg | Az új állapot: pending, complete, failed, refunded, abandoned. |
$payment_id |
egész szám | A fizetés azonosítója. |
Minden állapothoz külön akció is tartozik:
rcp_update_payment_status_completercp_update_payment_status_failedrcp_update_payment_status_refundedrcp_update_payment_status_abandoned
Ezek csak egy paramétert kapnak: a fizetés azonosítóját.
Lejárt tagság és profil
Szekció neve “Lejárt tagság és profil”rcp_user_has_expired_membership
Szekció neve “rcp_user_has_expired_membership”Szűrő. Azt módosítja, hogy a megadott felhasználónak van-e legalább egy lejárt tagsága.
| Paraméter | Típus | Jelentés |
|---|---|---|
$has_expired_membership |
logikai | true, ha a felhasználónak van legalább egy lejárt tagsága, különben false. |
$user_id |
egész szám | Az ellenőrzött felhasználó azonosítója. |
$customer |
RCP_Customer vagy false |
Az ügyfél objektuma, ha van; ha nincs, false. |
rcp_user_profile_updated
Szekció neve “rcp_user_profile_updated”Akció. Akkor fut, amikor a felhasználó az [rcp_profile_editor] rövidkóddal megjelenített űrlapon módosítja a profilját.
| Paraméter | Típus | Jelentés |
|---|---|---|
$user_id |
egész szám | A profilt szerkesztő felhasználó azonosítója. |
$userdata |
tömb | A beküldött WP_User mezők: ID, first_name, last_name, display_name, user_email. |
$old_data |
WP_User |
A felhasználó objektuma a módosítás előtti állapotban. |
A példa egyéni profilmezőket ment el. Ugyanez a minta használható az egyéni regisztrációs mezőknél is:
/** * Egyéni mezők mentése, amikor a tag módosítja a profilját. * * @param int $user_id A felhasználó azonosítója. * @param array $userdata A beküldött felhasználói mezők. * @param WP_User $old_data A felhasználó a módosítás előtt. */function pelda_rcp_profil_mentese( $user_id, $userdata = array(), $old_data = null ) { if ( ! empty( $_POST['rcp_foglalkozas'] ) ) { update_user_meta( $user_id, 'rcp_foglalkozas', sanitize_text_field( wp_unslash( $_POST['rcp_foglalkozas'] ) ) ); }
if ( ! empty( $_POST['rcp_helyszin'] ) ) { update_user_meta( $user_id, 'rcp_helyszin', sanitize_text_field( wp_unslash( $_POST['rcp_helyszin'] ) ) ); }}add_action( 'rcp_user_profile_updated', 'pelda_rcp_profil_mentese', 10, 3 );Készült: