Tovább a tartalomhoz

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 ).

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.

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.

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 $_POST adata (benne rcp_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.

Akció. A bővítmény saját ellenőrzése előtt fut le, két helyen:

  1. 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 az rcp_login_form_errors előtt indul.
  2. Regisztráció (rcp_process_registration()): két paramétert kap, a beküldött regisztrációs adatot és a bejelentkezett felhasználó RCP_Customer objektumá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.

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.

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.

Akció. További mezőket illeszthetsz vele a regisztrációs oldal elküldés gombja elé.

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.

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' );

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 );

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 );

Akció. Az adminfelületen, a kedvezménykódok táblázata alá tehetsz vele tartalmat.

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