Akciók és szűrők: admin felület, profil, tagsági szint, e-mail fejlécek
Tizenkét hook paraméterekkel és példákkal: a kedvezménykódok táblázatának oszlopai, a kedvezmény, a tag, a tagság és a fizetés szerkesztőoldala, a profilűrlap hibái, a tagsági szint űrlapja, az e-mail fejlécek.
Ez a fejezet a második 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_edit_subscription_level', 'fuggveny', 10, 2 ).
Kedvezménykódok oldala
Szekció neve “Kedvezménykódok oldala”A Restrict → Discount Codes lista táblázatát három akcióval bővítheted új oszloppal.
| Hook | Mikor fut | Paraméter |
|---|---|---|
rcp_discounts_page_table_header |
Új fejlécoszlopot adhatsz a táblázathoz. | nincs |
rcp_discounts_page_table_footer |
Új láblécoszlopot adhatsz a táblázathoz. | nincs |
rcp_discounts_page_table_column |
Új oszlop tartalmát írhatod ki soronként. | $discount_id: a megjelenített kedvezmény azonosítója |
Az oszlop három hookját együtt használd: a fejlécben és a láblécben a címet, a soronkénti hookban az értéket írd ki, hogy a táblázat szerkezete egyben maradjon.
rcp_edit_discount
Szekció neve “rcp_edit_discount”Akció. Közvetlenül egy kedvezménykód szerkesztése után fut le.
| Paraméter | Típus | Jelentés |
|---|---|---|
$discount_id |
egész | A szerkesztett kedvezménykód azonosítója. |
$args |
tömb | A kedvezmény adatai: name, description, amount, status, unit, code, expiration, max_uses, use_count, subscription_id. |
Tag, tagság és fizetés szerkesztése
Szekció neve “Tag, tagság és fizetés szerkesztése”rcp_edit_member
Szekció neve “rcp_edit_member”Akció. Akkor fut le, amikor egy tagot az adminfelületen szerkesztenek. Egyedi mezők mentésére vagy tetszőleges kód lefuttatására jó.
- Paraméter:
$user_id(egész), a szerkesztett felhasználó azonosítója.
/** * A beküldött profiladatok mentése. */function pw_rcp_save_user_fields_on_profile_save( $user_id ) { if ( ! empty( $_POST['rcp_profession'] ) ) { update_user_meta( $user_id, 'rcp_profession', sanitize_text_field( $_POST['rcp_profession'] ) ); }
if ( ! empty( $_POST['rcp_location'] ) ) { update_user_meta( $user_id, 'rcp_location', sanitize_text_field( $_POST['rcp_location'] ) ); }}add_action( 'rcp_edit_member', 'pw_rcp_save_user_fields_on_profile_save', 10 );rcp_edit_member_after
Szekció neve “rcp_edit_member_after”Akció. Szöveget vagy HTML-t írhatsz vele az adminfelület ügyfélrészletek oldalára, az IP-cím mező után, a részlettáblázat belsejébe.
- Paraméter:
$user_id, a szerkesztett felhasználó azonosítója. Figyelem: ez a WordPress-felhasználó azonosítója, nem az ügyfélé.
rcp_edit_membership_after
Szekció neve “rcp_edit_membership_after”Akció. A tagság részletei oldal táblázatának végén fut le. A Restrict → Memberships listában nyiss meg egy tagságot, ott jelenik meg. Mivel a táblázat végén fut, a kimenetet táblázatsorként (<tr>) írd ki.
- Paraméter:
$membership(RCP_Membership), a tagság objektuma.
A példa egy „Cég” szövegmezőt ír ki a tagság company metaadatának értékével:
/** * Cég mező a tagság részletei táblázatban. * * @param RCP_Membership $membership A tagság objektuma. */function ag_rcp_edit_membership_after( $membership ) { $meta_value = rcp_get_membership_meta( $membership->get_id(), 'company', true ); ?> <tr> <th scope="row" class="row-title"> <label for="rcp-company"><?php esc_html_e( 'Cég:', 'rcp' ); ?></label> </th> <td> <input type="text" name="rcp_company" id="rcp-company" value="<?php echo esc_attr( $meta_value ); ?>" /> </td> </tr> <?php}add_action( 'rcp_edit_membership_after', 'ag_rcp_edit_membership_after' );Ez a kód csak megjeleníti a mezőt. A mentéshez külön függvény kell, amelyet az rcp_action_edit_membership akcióra kell csatlakoztatni 9-es prioritással, hogy még azelőtt fusson le, hogy a bővítmény feldolgozza az űrlapot és átirányít:
/** * A Cég mező mentése a tagság részletei oldalról. */function ag_rcp_save_custom_membership_field() { // Jogosultság-ellenőrzés, ne szerkeszd. if ( ! wp_verify_nonce( $_POST['rcp_edit_membership_nonce'], 'rcp_edit_membership' ) ) { wp_die( __( 'Nonce verification failed.', 'rcp' ), __( 'Error', 'rcp' ), array( 'response' => 403 ) ); }
if ( ! current_user_can( 'rcp_manage_members' ) ) { wp_die( __( 'You do not have permission to perform this action.', 'rcp' ), __( 'Error', 'rcp' ), array( 'response' => 403 ) ); }
// Melyik tagságot mentjük, ne szerkeszd. if ( empty( $_POST['membership_id'] ) ) { wp_die( __( 'Invalid membership ID.', 'rcp' ), __( 'Error', 'rcp' ), array( 'response' => 400 ) ); }
$membership_id = absint( $_POST['membership_id'] ); $membership = rcp_get_membership( $membership_id );
if ( empty( $membership ) ) { wp_die( __( 'Invalid membership.', 'rcp' ), __( 'Error', 'rcp' ), array( 'response' => 400 ) ); }
// Az ellenőrzések után jöhet a saját érték mentése. if ( ! empty( $_POST['rcp_company'] ) ) { rcp_update_membership_meta( $membership->get_id(), 'company', sanitize_text_field( $_POST['rcp_company'] ) ); } else { rcp_delete_membership_meta( $membership->get_id(), 'company' ); }}add_action( 'rcp_action_edit_membership', 'ag_rcp_save_custom_membership_field', 9 );A tagság metaadatairól a fejlesztői függvények fejezetei szólnak.
rcp_edit_payment_after
Szekció neve “rcp_edit_payment_after”Akció. Az adminfelület fizetésszerkesztő oldalán fut le, közvetlenül a táblázat lezárása előtt. Ide tehetsz saját sorokat vagy tartalmat.
Profilűrlap hibái
Szekció neve “Profilűrlap hibái”rcp_edit_profile_form_errors
Szekció neve “rcp_edit_profile_form_errors”Akció. Azután fut le, hogy a bővítmény megvizsgálta a profilszerkesztő űrlapot hibákra. Itt ellenőrizheted a saját mezőidet, és hibát adhatsz, ha nincsenek kitöltve.
| Paraméter | Típus | Jelentés |
|---|---|---|
$post |
tömb | Az űrlappal beküldött $_POST adat. |
$user_id |
egész | A profilját módosító felhasználó azonosítója. |
A példa hibát ad, ha az egyedi mező üres:
function ag_rcp_edit_profile_form_errors( $post, $user_id ) { if ( empty( $post['my_custom_field'] ) ) { rcp_errors()->add( 'custom_field_empty', __( 'Az egyedi mezőt ki kell tölteni.', 'rcp' ) ); }}add_action( 'rcp_edit_profile_form_errors', 'ag_rcp_edit_profile_form_errors', 10, 2 );Tagsági szint szerkesztése
Szekció neve “Tagsági szint szerkesztése”rcp_edit_subscription_form
Szekció neve “rcp_edit_subscription_form”Akció. A tagsági szint szerkesztő táblázatába illeszthetsz vele tartalmat: a Restrict → Membership Levels listában szerkessz egy szintet. Új mező hozzáadására való; a mentéshez az rcp_edit_subscription_level akciót használd.
- Paraméter:
$level(Membership_Level), a szerkesztett tagsági szint objektuma.
A példa egy „Csoportos helyek” számmezőt ad az űrlaphoz, és kitölti a szinthez mentett értékkel:
/** * Csoportos helyek mező a tagsági szint szerkesztő űrlapján. * * @param Membership_Level $level A szerkesztett tagsági szint. */function rcpga_edit_groups_checkbox_subscription_form( $level ) { $level_id = $level->get_id(); $seat_count = empty( $level_id ) ? 0 : rcpga_get_level_group_seats_allowed( $level_id ); ?> <tr class="form-field"> <th scope="row" valign="top"> <label for="rcpga-group-seats"><?php esc_html_e( 'Csoportos helyek', 'rcp-group-accounts' ); ?></label> </th> <td> <input id="rcpga-group-seats" type="number" name="rcpga-group-seats" value="<?php echo absint( $seat_count ); ?>" min="0" style="width: 100px;" /> <p class="description"><?php esc_html_e( 'A szinthez elérhető csoportos helyek száma a csoport tulajdonosával együtt.', 'rcp-group-accounts' ); ?></p> </td> </tr> <?php}add_action( 'rcp_edit_subscription_form', 'rcpga_edit_groups_checkbox_subscription_form' );rcp_edit_subscription_level
Szekció neve “rcp_edit_subscription_level”Akció. Közvetlenül egy tagsági szint szerkesztése után fut le. Az rcp_edit_subscription_form akcióval felvett egyedi mező mentésére való.
| Paraméter | Típus | Jelentés |
|---|---|---|
$level_id |
egész | A most szerkesztett szint azonosítója. |
$args |
tömb | A szint frissítésekor használt adatok. |
/** * Egyedi mező mentése a tagsági szint szerkesztő űrlapjáról. * * @param int $level_id A most szerkesztett szint azonosítója. * @param array $args A frissítéskor használt adatok. */function rcpga_save_groups_seats_subscription( $level_id, $args ) { if ( ! isset( $_POST['rcpga-group-seats'] ) ) { return; }
// Itt mentsd el a saját értéket a $level_id szinthez.}add_action( 'rcp_edit_subscription_level', 'rcpga_save_groups_seats_subscription', 10, 2 );A 2 az add_action hívásban kötelező, különben a függvény csak a $level_id paramétert kapja meg.
E-mailek
Szekció neve “E-mailek”rcp_email_headers
Szekció neve “rcp_email_headers”Szűrő. Az RCP_Emails osztály e-mail fejléceit módosítja; a fejlécek ezután a wp_mail() függvénybe kerülnek.
| Paraméter | Típus | Jelentés |
|---|---|---|
$headers |
szöveg | Az e-mail fejlécei egyetlen szövegként. |
$rcp_email |
RCP_Emails |
Az e-mailt küldő osztály példánya. |
A példa minden kimenő levélről másolatot küld a webhely adminisztrátorának:
function ag_rcp_emails_headers( $headers, $rcp_email ) { $headers .= sprintf( 'BCC: %s', get_bloginfo( 'admin_email' ) ) . "\r\n";
return $headers;}add_filter( 'rcp_email_headers', 'ag_rcp_emails_headers', 10, 2 );Készült: