Tovább a tartalomhoz

Akciók és szűrők: tagságok, beállítások, jelszóűrlap, fizetések oldala

Tizenkét hook paraméterekkel és példákkal: új és megújított tagság, a tagságok táblázata, a beállítóoldalak saját mezői, a korlátozás-metabox típusai, a jelszóűrlap hibái, a fizetés állapotának felirata és a fizetések oldala.

Ez a fejezet az előző 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_membership_post_renew', 'fuggveny', 10, 3 ). A szűrőnek mindig vissza kell adnia az (esetleg módosított) első paramétert.

Akció. Akkor fut le, amikor új tagság jön létre, szintemelésnél és szintcsökkentésnél is. Fontos, hogy a tagságrekord létrejöttekor indul, nem az aktiváláskor. Ha a tagság „függőben” (pending) állapotban jön létre, a hook akkor is lefut, ezért ne feltételezd, hogy a tagság már aktív.

Ha a kódodnak csak aktiváláskor kell futnia, használd inkább az rcp_transition_membership_status_active vagy az rcp_membership_post_activate hookot.

Paraméter Típus Jelentés
$membership_id egész Az új tagságrekord azonosítója.
$data tömb A tagságrekord létrehozásához használt adatok.
function mytheme_rcp_new_membership_added( $membership_id, $data ) {
$membership = rcp_get_membership( $membership_id );
if ( $membership ) {
error_log( 'Új tagság jött létre: ' . $membership_id );
}
}
add_action( 'rcp_new_membership_added', 'mytheme_rcp_new_membership_added', 10, 2 );

Akció. A tagság megújítása után fut le, az automatikus és a kézi megújításnál is. Az első aktiváláskor nem indul el, ahhoz az rcp_membership_post_activate való.

Paraméter Típus Jelentés
$expiration szöveg A tagság új lejárati dátuma MySQL formátumban.
$membership_id egész A tagság azonosítója.
$membership RCP_Membership A tagság objektuma.
function mytheme_rcp_membership_post_renew( $expiration, $membership_id, $membership ) {
error_log( sprintf( 'A(z) %d tagság megújult, új lejárat: %s', $membership_id, $expiration ) );
}
add_action( 'rcp_membership_post_renew', 'mytheme_rcp_membership_post_renew', 10, 3 );

Kapcsolódó: rcp_membership_pre_renew, rcp_membership_post_activate.

A Restrict → Memberships oldal táblázatának oszlopait két szűrővel alakíthatod. Az első az oszlopokat adja meg, a második az egyes cellák tartalmát. A teljes, lépésenkénti példa a Kódpéldák fejezetben van.

https://minta-bolt.hu/wp-admin/admin.php?page=rcp-members
A Restrict → Memberships oldal táblázata egy tagsággal

A képen a táblázat alapértelmezett oszlopai látszanak: Customer, Membership, Status, Recurring, Created és Expiration. Ezeket módosítják az alábbi szűrők.

Szűrő. A tagságok táblázatának oszlopait módosítja: hozzáadhatsz, átnevezhetsz vagy eltávolíthatsz oszlopot.

Paraméter Típus Jelentés
$columns tömb Az oszlopkulcsok és az oszlopnevek tömbje.
function mytheme_rcp_memberships_columns( $columns ) {
$columns['company'] = __( 'Cég', 'mytheme' );
return $columns;
}
add_filter( 'rcp_memberships_list_table_columns', 'mytheme_rcp_memberships_columns' );

rcp_memberships_list_table_column_{column}

Szekció neve “rcp_memberships_list_table_column_{column}”

Szűrő. Egy oszlop cellájának értékét adja meg. A {column} helyére az oszlop kulcsa kerül, így az új company oszlophoz az rcp_memberships_list_table_column_company szűrő tartozik.

Paraméter Típus Jelentés
$value vegyes A cellában megjelenő érték.
$membership RCP_Membership A sorhoz tartozó tagság objektuma.
function mytheme_rcp_memberships_column_company( $value, $membership ) {
return esc_html( get_user_meta( $membership->get_user_id(), 'company', true ) );
}
add_filter( 'rcp_memberships_list_table_column_company', 'mytheme_rcp_memberships_column_company', 10, 2 );

Akció. Saját beállítást vehetsz fel a Restrict → Settings → General oldalon, a korlátozott tartalom üzenetét tartalmazó rész alá (az üzenetek közé, a Restricted Content Message mező után).

  • Paraméter: $rcp_options, a bővítmény beállításainak tömbje.

A beviteli mező nevének rcp_settings[kulcs] formájúnak kell maradnia, mert a bővítmény így menti el a saját beállításai mellett.

function mytheme_rcp_messages_settings( $rcp_options ) {
$value = isset( $rcp_options['your_custom_setting'] ) ? $rcp_options['your_custom_setting'] : '';
?>
<tr valign="top">
<th>
<label for="rcp_settings[your_custom_setting]"><?php esc_html_e( 'Saját beállítás', 'mytheme' ); ?></label>
</th>
<td>
<input
class="regular-text"
id="rcp_settings[your_custom_setting]"
name="rcp_settings[your_custom_setting]"
type="text"
value="<?php echo esc_attr( $value ); ?>"
/>
<p class="description"><?php esc_html_e( 'Ide jön a leírás.', 'mytheme' ); ?></p>
</td>
</tr>
<?php
}
add_action( 'rcp_messages_settings', 'mytheme_rcp_messages_settings' );

Akció. Ugyanúgy működik, mint az rcp_messages_settings, de a Restrict → Settings → Misc oldalra teszi a saját beállításodat. Paramétere szintén $rcp_options, és a mező nevének itt is rcp_settings[kulcs] alakúnak kell lennie, hogy a bővítmény a többi beállítással együtt mentse.

function mytheme_rcp_misc_settings( $rcp_options ) {
$value = isset( $rcp_options['your_custom_setting'] ) ? $rcp_options['your_custom_setting'] : '';
?>
<tr valign="top">
<th>
<label for="rcp_settings[your_custom_setting]"><?php esc_html_e( 'Saját beállítás', 'mytheme' ); ?></label>
</th>
<td>
<input class="regular-text" id="rcp_settings[your_custom_setting]" name="rcp_settings[your_custom_setting]" type="text" value="<?php echo esc_attr( $value ); ?>" />
<p class="description"><?php esc_html_e( 'Ide jön a leírás.', 'mytheme' ); ?></p>
</td>
</tr>
<?php
}
add_action( 'rcp_misc_settings', 'mytheme_rcp_misc_settings' );

Szűrő. A „tartalom korlátozása” metabox alapból minden nyilvános tartalomtípushoz megjelenik. Ha egy másik típushoz is szeretnéd, add hozzá a típus nevét a tömbhöz.

Paraméter Típus Jelentés
$post_types tömb Azoknak a tartalomtípusoknak a nevei, amelyeknél a metabox megjelenik.
function mytheme_rcp_metabox_post_types( $post_types ) {
$post_types[] = 'post_type_name';
return $post_types;
}
add_filter( 'rcp_metabox_post_types', 'mytheme_rcp_metabox_post_types' );

Akció. A jelszómódosítás feldolgozásakor fut le, miután a bővítmény a beépített ellenőrzésekkel megnézte, hogy üres-e a mező és egyezik-e a két jelszó, de még azelőtt, hogy az új jelszót elmentené.

Hibát az rcp_errors()->add( $code, $message, 'password' ) hívással adhatsz hozzá. Ha marad hiba, a bővítmény nem frissíti a jelszót.

Paraméter Típus Jelentés
$posted_data tömb A jelszómódosító kérés nyers $_POST adata.
function mytheme_rcp_password_form_errors( $posted_data ) {
if ( ! empty( $posted_data['rcp_user_pass'] ) && false !== strpos( $posted_data['rcp_user_pass'], ' ' ) ) {
rcp_errors()->add(
'password_has_spaces',
__( 'A jelszó nem tartalmazhat szóközt.', 'mytheme' ),
'password'
);
}
}
add_action( 'rcp_password_form_errors', 'mytheme_rcp_password_form_errors' );

Kapcsolódó: rcp_before_password_form_errors (a beépített ellenőrzések előtt fut, lásd az űrlap-hookok fejezetet), [password_form] rövidkód.

Szűrő. A fizetés állapotának feliratát módosítja (például „Complete”, „Pending”, „Refunded”). Ez a felirat három helyen jelenik meg: a [subscription_details] rövidkód fizetési táblázatában, a fizetés számláján és az adminisztrációs fizetéstáblázatban a Restrict → Payments oldalon.

Paraméter Típus Jelentés
$label szöveg A megjelenő felirat, például „Complete”, „Pending” vagy „Refunded”.
$status szöveg A fizetés állapotának kulcsa, például complete, pending vagy refunded.
$payment objektum A fizetés adatbázisbeli objektuma.
function mytheme_rcp_payment_status_label( $label, $status, $payment ) {
if ( 'complete' === $status ) {
return __( 'Kifizetve', 'mytheme' );
}
return $label;
}
add_filter( 'rcp_payment_status_label', 'mytheme_rcp_payment_status_label', 10, 3 );

A Restrict → Payments oldal táblázatán három akcióval bővíthetsz tartalmat.

https://minta-bolt.hu/wp-admin/admin.php?page=rcp-payments
A Restrict → Payments oldal a fizetések táblázatával

A képen a fizetések táblázata látszik a szűrőkkel (átjáró, típus, tagsági szint, dátumtartomány). A táblázat alatti rész és az új oszlopok az alábbi hookokkal bővíthetők.

Hook Típus Mit csinál Paraméter
rcp_payments_page_bottom akció Tartalmat ír a fizetések oldalának aljára. nincs
rcp_payments_page_table_column akció Tartalmat ad egy új oszlopba a fizetések táblázatában. $payment_id: a megjelenített fizetés azonosítója
rcp_payments_page_table_footer akció Új oszlopot ad a táblázat láblécéhez. nincs
function mytheme_rcp_payments_page_bottom() {
echo '<p>' . esc_html__( 'A fizetésekkel kapcsolatos megjegyzések.', 'mytheme' ) . '</p>';
}
add_action( 'rcp_payments_page_bottom', 'mytheme_rcp_payments_page_bottom' );

Ha a táblázatban saját oszlopot szeretnél, az rcp_payments_page_table_column az oszlop cellájának tartalmát írja ki, az rcp_payments_page_table_footer pedig a hozzá tartozó láblécmezőt.

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