Tovább a tartalomhoz

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

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.

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.

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

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

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.

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.

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

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

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.

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:

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