Akciók és szűrők: űrlap-hookok, lejárat, fizetés, pénznem
Tizenkét akció és szűrő paraméterekkel és példákkal: az űrlapok előtti és utáni kimenet, az űrlap-ellenőrzés előtti hookok, a lejárati dátum, a szintváltás tiltása, új fizetés, pénznemjel.
Ez a fejezet az első hookfejezet folytatása. 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, például add_action( 'rcp_create_payment', 'fuggveny', 10, 2 ).
Bejelentkezési és jelszóűrlap
Szekció neve “Bejelentkezési és jelszóűrlap”rcp_before_login_form
Szekció neve “rcp_before_login_form”Akció. Közvetlenül a szokásos bejelentkezési sablon (login.php) kiírása előtt fut le. Csak a normál bejelentkezési nézetnél indul el, az elfelejtett jelszó, az e-mail-ellenőrzés és a jelszó-visszaállítás nézeténél nem. Arra jó, hogy szöveget vagy egyéb tartalmat írj az űrlap fölé azokon az oldalakon, ahol a [login_form] rövidkód vagy a rcp_login_form_fields() függvényt hívó sablon van.
- Paraméter: nincs.
function mytheme_rcp_before_login_form() { echo '<p>' . esc_html__( 'A tagok itt jelentkezhetnek be.', 'mytheme' ) . '</p>';}add_action( 'rcp_before_login_form', 'mytheme_rcp_before_login_form' );Kapcsolódó: rcp_after_login_form (az űrlap után fut), [login_form] rövidkód.
rcp_before_password_form
Szekció neve “rcp_before_password_form”Akció. A jelszómódosító sablon (change-password.php) kiírása előtt fut le a rcp_change_password_form() függvényben. Ez az űrlap jelenik meg a jelszó-visszaállítás befejezésekor és a [password_form] rövidkódnál. Az elfelejtett jelszó kérésére szolgáló űrlapot nem érinti.
- Paraméter: nincs.
function mytheme_rcp_before_password_form() { echo '<p>' . esc_html__( 'Válassz erős új jelszót.', 'mytheme' ) . '</p>';}add_action( 'rcp_before_password_form', 'mytheme_rcp_before_password_form' );Kapcsolódó: rcp_after_password_form, [password_form] rövidkód.
rcp_before_password_form_errors
Szekció neve “rcp_before_password_form_errors”Akció. A jelszómódosítás feldolgozásának elején fut le az rcp_change_password() függvényben: a nonce ellenőrzése után, de még azelőtt, hogy a bővítmény megnézné, üres-e vagy eltér-e a két jelszó. Korai ellenőrzésre való a jelszómódosító és jelszó-visszaállító űrlapon.
- Paraméter:
$posted_data(tömb), a kérés nyers$_POSTadata (bennercp_user_pass,rcp_user_pass_confirm,rcp_password_nonceés a kapcsolódó mezők).
A példa elutasítja a 12 karakternél rövidebb jelszót:
function mytheme_rcp_before_password_form_errors( $posted_data ) { if ( ! empty( $posted_data['rcp_user_pass'] ) && strlen( $posted_data['rcp_user_pass'] ) < 12 ) { rcp_errors()->add( 'password_too_short', __( 'A jelszó legalább 12 karakter legyen.', 'mytheme' ), 'password' ); }}add_action( 'rcp_before_password_form_errors', 'mytheme_rcp_before_password_form_errors' );Kapcsolódó: rcp_password_form_errors, rcp_before_password_form.
Az ellenőrzés előtti hook
Szekció neve “Az ellenőrzés előtti hook”rcp_before_form_errors
Szekció neve “rcp_before_form_errors”Akció. A bővítmény saját ellenőrzése előtt fut le, két helyen:
- Bejelentkezés (
rcp_process_login()): egy paramétert kap, a beküldött bejelentkezési adatot. A felhasználónév és jelszó ellenőrzése, valamint azrcp_login_form_errorselőtt indul. - Regisztráció (
rcp_process_registration()): két paramétert kap, a beküldött regisztrációs adatot és a bejelentkezett felhasználóRCP_Customerobjektumát. Teljesen új feliratkozónál ez üres lehet. A tagsági szint és a fizetési átjáró ellenőrzése előtt fut.
A harmadik paramétert (10, 2) csak akkor add meg az add_action hívásnál, ha a regisztrációs változatra csatlakozol.
Paraméterek:
| Paraméter | Típus | Jelentés |
|---|---|---|
$posted_data |
tömb | A bejelentkezési vagy regisztrációs kérés nyers $_POST adata. |
$customer |
RCP_Customer vagy false |
Csak regisztrációnál: a bejelentkezett felhasználó ügyfélrekordja, ha van. |
function mytheme_rcp_before_login_form_errors( $posted_data ) { // Bejelentkezés: a hibacsoport neve 'login'.}add_action( 'rcp_before_form_errors', 'mytheme_rcp_before_login_form_errors', 10, 1 );
function mytheme_rcp_before_register_form_errors( $posted_data, $customer ) { if ( empty( $_POST['rcp_company'] ) ) { rcp_errors()->add( 'missing_company', __( 'A cég neve kötelező.', 'mytheme' ), 'register' ); }}add_action( 'rcp_before_form_errors', 'mytheme_rcp_before_register_form_errors', 10, 2 );Kapcsolódó: rcp_form_errors, az egyedi regisztrációs mezők létrehozása.
Regisztrációs űrlap
Szekció neve “Regisztrációs űrlap”rcp_before_register_form
Szekció neve “rcp_before_register_form”Akció. Az rcp_registration_form_fields() függvényben fut le, közvetlenül azelőtt, hogy a bővítmény betöltené a regisztrációs sablont (register.php, register-single.php vagy a szintre szabott sablon). Az egész űrlap fölé tehetsz vele szöveget vagy értesítést; ez a [register_form] és a [register_form_stripe] rövidkód kimenetére is vonatkozik.
Paraméterek:
| Paraméter | Típus | Jelentés |
|---|---|---|
$level_id |
egész vagy null |
A tagsági szint azonosítója, ha az űrlap egyetlen szintre szól (egyszintes rövidkód). null, ha minden szint látszik. |
$atts |
tömb | A rövidkódnak átadott attribútumok. |
function mytheme_rcp_before_register_form( $level_id, $atts ) { if ( $level_id ) { echo '<p>' . esc_html__( 'Egy konkrét tagsági szintre regisztrálsz.', 'mytheme' ) . '</p>'; }}add_action( 'rcp_before_register_form', 'mytheme_rcp_before_register_form', 10, 2 );Kapcsolódó: rcp_after_register_form, rcp_before_register_form_fields.
rcp_before_register_form_fields
Szekció neve “rcp_before_register_form_fields”Akció. A regisztrációs űrlap sablonjában (register-common.php) fut le, az alapértelmezett felhasználónév-, e-mail-, név- és jelszómezők előtt. Csak akkor indul el, ha a látogató nincs bejelentkezve: a megújító vagy szintet váltó, bejelentkezett felhasználó nem látja ezt a blokkot.
A HTML-t az <form> belsejébe írja ki, így a mezők a regisztrációval együtt elküldődnek. A beküldött értékeket az rcp_form_errors akcióban ellenőrizd 'register' hibacsoporttal. Ha az egész űrlap köré kell tartalom, használd az rcp_before_register_form vagy az rcp_after_register_form akciót.
- Paraméter: nincs.
function mytheme_rcp_before_register_form_fields() { ?> <p id="rcp_company_wrap"> <label for="rcp_company"><?php esc_html_e( 'Cég', 'mytheme' ); ?></label> <input type="text" name="rcp_company" id="rcp_company" class="required" value="<?php echo isset( $_POST['rcp_company'] ) ? esc_attr( wp_unslash( $_POST['rcp_company'] ) ) : ''; ?>" /> </p> <?php}add_action( 'rcp_before_register_form_fields', 'mytheme_rcp_before_register_form_fields' );Az ellenőrzést és a mentést az egyedi regisztrációs mezők mintája szerint végezd el.
Kapcsolódó: rcp_after_register_form_fields, rcp_after_password_registration_field.
rcp_before_registration_submit_field
Szekció neve “rcp_before_registration_submit_field”Akció. További mezőket illeszthetsz vele a regisztrációs oldal elküldés gombja elé.
Tagsági szintek és lejárat
Szekció neve “Tagsági szintek és lejárat”rcp_calculate_membership_level_expiration
Szekció neve “rcp_calculate_membership_level_expiration”Szűrő. A tagsági szint kiszámított lejárati dátumát módosítja. Csak az első feliratkozásnál és a szintváltásnál (upgrade) fut, a megújításnál nem.
| Paraméter | Típus | Jelentés |
|---|---|---|
$expiration_date |
szöveg | A számított dátum MySQL formátumban, vagy none, ha nincs lejárat. |
$membership_level |
objektum | A tagsági szint objektuma az adatbázisból. |
$set_trial |
logikai | Próbaidőszakot számol-e éppen a bővítmény. |
rcp_can_upgrade_subscription
Szekció neve “rcp_can_upgrade_subscription”Szűrő. Azt dönti el, válthat-e a felhasználó magasabb szintre.
| Paraméter | Típus | Jelentés |
|---|---|---|
$can_upgrade |
logikai | true, ha válthat, false, ha nem. |
$user_id |
egész | Az ellenőrzött felhasználó azonosítója. |
A példa mindenkinek letiltja a szintváltást:
add_filter( 'rcp_can_upgrade_subscription', '__return_false' );Fizetés és pénznem
Szekció neve “Fizetés és pénznem”rcp_create_payment
Szekció neve “rcp_create_payment”Akció. Akkor fut le, amikor egy új fizetés bekerül az adatbázisba.
| Paraméter | Típus | Jelentés |
|---|---|---|
$payment_id |
egész | Az új fizetés azonosítója. |
$args |
tömb | A fizetés létrehozásakor használt adatok (lent). |
A $args tömb elemei:
| Kulcs | Típus | Jelentés |
|---|---|---|
subscription |
szöveg | A hozzá tartozó tagsági szint neve. |
object_id |
egész | A hozzá tartozó objektum azonosítója (általában a tagsági szinté). |
object_type |
szöveg | Az objektum típusa (általában subscription, vagyis tagsági szint). |
date |
szöveg | A fizetés rögzítésének ideje MySQL formátumban. |
amount |
tizedes | A végső fizetett összeg. |
subtotal |
tizedes | A szint alapára a kedvezmények, jóváírások és díjak előtt. |
credits |
tizedes | A fizetésből levont, időarányos jóváírás. |
fees |
tizedes | A fizetéshez adott díjak. |
discount_amount |
tizedes | A kedvezménykóddal levont összeg. |
discount_code |
szöveg | A használt kedvezménykód. |
user_id |
egész | A felhasználó azonosítója. |
payment_type |
szöveg | A fizetés típusa (például „Credit Card One Time”). |
transaction_type |
szöveg | A tranzakció fajtája: new, renewal, downgrade vagy upgrade. |
subscription_key |
szöveg | A feliratkozás kulcsa. |
transaction_id |
szöveg | A tranzakció azonosítója a fizetési átjárónál. |
status |
szöveg | A fizetés állapota (például complete, pending). |
gateway |
szöveg | A használt fizetési átjáró azonosítója. |
A példa e-mailt küld az ügyfélnek, ha új, kézi (manual) fizetés jön létre:
/** * E-mail az ügyfélnek új kézi fizetés létrehozásakor. */function pelda_rcp_create_payment( $payment_id, $args ) { // Ha az átjáró nem a kézi fizetés, kilépünk. if ( 'manual' != $args['gateway'] ) { return; }
$user_info = get_userdata( $args['user_id'] );
// Ha nincs felhasználói adat, kilépünk. if ( ! $user_info ) { return; }
$subject = __( 'A fizetésed függőben van', 'rcp' ); $message = __( 'Szia %name%! A(z) %subscription_name% fizetésed még függőben van.', 'rcp' );
$emails = new RCP_Emails; $emails->member_id = $args['user_id']; $emails->payment_id = $payment_id;
$emails->send( $user_info->user_email, $subject, $message );}add_action( 'rcp_create_payment', 'pelda_rcp_create_payment', 10, 2 );rcp_{pénznem}_symbol
Szekció neve “rcp_{pénznem}_symbol”Szűrő. Egy pénznem jelét módosítja. A hook neve a pénznem kisbetűs kódját tartalmazza, például rcp_usd_symbol.
| Paraméter | Típus | Jelentés |
|---|---|---|
$symbol |
szöveg | A pénznem jele. |
$currency |
szöveg | A pénznem kódja nagybetűvel. |
A példa az USD jelét „$” helyett „USD”-re cseréli:
function pelda_rcp_usd_symbol( $symbol, $currency ) { return 'USD';}add_filter( 'rcp_usd_symbol', 'pelda_rcp_usd_symbol', 10, 2 );Admin felület
Szekció neve “Admin felület”rcp_discounts_below_table
Szekció neve “rcp_discounts_below_table”Akció. Az adminfelületen, a kedvezménykódok táblázata alá tehetsz vele tartalmat.
Készült: