Kódpéldák: tagságtábla, e-mail címke, pénznem, tagságok lekérése
Rövid PHP-példák: új oszlop a tagságok táblájában, egyéni e-mail címke, új pénznem, tagságok lekérdezése és a szintmeta API.
Ez a fejezet egyéni kódot mutat be. Az ilyen kód a saját felelősséged: a példák kiindulópontnak szólnak, ha elakadsz, kérj fejlesztő segítséget. A kódot érdemes egy saját bővítménybe vagy a gyermektéma functions.php fájljába tenni.
Új oszlop a tagságok táblájában
Szekció neve “Új oszlop a tagságok táblájában”Ha saját tagságmetát használsz (például „company”), megjelenítheted egy külön oszlopban a Memberships táblázatban. Két lépés kell: az oszlop regisztrálása, majd az értékek kiírása.
1. Az oszlop regisztrálása
Szekció neve “1. Az oszlop regisztrálása”Az rcp_memberships_list_table_columns szűrővel add hozzá az oszlopot. Ez még csak a fejlécet hozza létre, értékek nélkül.
function ag_rcp_memberships_list_table_columns( $columns ) { $key = 'company'; // Kisbetűs, szóköz nélküli egyedi azonosító. $name = __( 'Company', 'rcp' ); // A fejlécben megjelenő felirat, lehet benne szóköz.
$columns[ $key ] = $name;
return $columns;}add_filter( 'rcp_memberships_list_table_columns', 'ag_rcp_memberships_list_table_columns' );2. Az értékek kiírása
Szekció neve “2. Az értékek kiírása”Az rcp_memberships_list_table_column_{oszlopkulcs} szűrő adja meg, mi jelenjen meg az oszlopban. A {oszlopkulcs} helyére az 1. lépésben választott kulcs kerül. Itt a kulcs company, ezért a szűrő neve rcp_memberships_list_table_column_company.
function ag_rcp_memberships_list_table_column_company( $value, $membership ) { $company = rcp_get_membership_meta( $membership->get_id(), 'company', true );
return $company;}add_filter( 'rcp_memberships_list_table_column_company', 'ag_rcp_memberships_list_table_column_company', 10, 2 );A függvény a tagságmeta API-val olvassa ki az értéket. Cseréld arra, amit meg akarsz jeleníteni.
Alapértelmezett oszlop eltávolítása
Szekció neve “Alapértelmezett oszlop eltávolítása”Ugyanezzel a szűrővel oszlopot el is tüntethetsz. Az alapértelmezett oszlopok kulcsai:
| Kulcs | Oszlop |
|---|---|
customer |
Az ügyfél |
object_id |
A tagsági szint neve |
status |
Az állapot |
auto_renew |
Az ismétlődés |
created_date |
A létrehozás dátuma |
expiration_date |
A lejárat dátuma |
Például a létrehozás dátumának oszlopát így távolíthatod el:
function ag_rcp_memberships_list_remove_column( $columns ) { $key_to_remove = 'created_date'; // Ide a törölni kívánt oszlop kulcsa kerül.
if ( array_key_exists( $key_to_remove, $columns ) ) { unset( $columns[ $key_to_remove ] ); }
return $columns;}add_filter( 'rcp_memberships_list_table_columns', 'ag_rcp_memberships_list_remove_column' );Új e-mail sablon címke
Szekció neve “Új e-mail sablon címke”Az e-mailek szövegébe a sablon címkékkel (például %username%) szúrhatsz be dinamikus adatot. A beépített címkék listáját az e-mail beállítások oldalán találod. Saját címkét két lépésben vehetsz fel: regisztrálod, majd megírod a függvényt, amely az értéket adja.
A címke regisztrálása
Szekció neve “A címke regisztrálása”Az rcp_email_template_tags szűrővel add hozzá:
function ag_rcp_email_template_tags( $email_tags ) { $email_tags[] = array( 'tag' => 'my_custom_tag', 'description' => __( 'Description of my custom tag.' ), 'function' => 'ag_rcp_my_custom_tag_callback_function', );
return $email_tags;}add_filter( 'rcp_email_template_tags', 'ag_rcp_email_template_tags' );A tömb három értéke:
| Kulcs | Jelentése |
|---|---|
tag |
A címke neve a % jelek nélkül. A fenti példa címkéjét az e-mailben %my_custom_tag% alakban használod. |
description |
Rövid leírás, ez jelenik meg a címkék listájában a beállítások oldalon. |
function |
Annak a függvénynek a neve, amely az értéket szolgáltatja. |
A regisztrálás után a címke megjelenik a Restrict → Settings → Emails oldal címkelistájában.

A kép az e-mail beállítások fülét mutatja, a sablon címkék listájával: ide kerül az újonnan regisztrált címke is.
A visszahívó függvény
Szekció neve “A visszahívó függvény”A függvény három paramétert kap:
$user_id: az e-mailt kapó felhasználó azonosítója,$payment_id: a felhasználó legutóbbi fizetésének azonosítója,$tag: a címke neve.
Például egy felhasználói metaadat visszaadása:
function ag_rcp_my_custom_tag_callback_function( $user_id = 0, $payment_id = 0, $tag = '' ) { $my_user_meta = get_user_meta( $user_id, 'my_custom_user_meta', true );
return $my_user_meta;}A függvény neve egyezzen a function értékkel a regisztrációs tömbben.
Új pénznem felvétele
Szekció neve “Új pénznem felvétele”A bővítmény a legtöbb nagy pénznemet ismeri. Ha a tiéd hiányzik, PHP-kóddal felveheted.
-
Az
rcp_currenciesszűrővel add hozzá a pénznemet. Ettől megjelenik a Restrict → Settings → Payments oldal pénznem-legördülőjében, és ennyi elég is a működéshez.function pw_rcp_custom_currency( $currencies ) {$currencies['MRO'] = 'Ouguiya (UM)';return $currencies;}add_filter( 'rcp_currencies', 'pw_rcp_custom_currency' ); -
Opcionális: add meg a pénznem jelét. Ha kihagyod, a bővítmény a pénznem kódját írja az ár elé vagy mögé. A jel helyét a Currency Position beállítás határozza meg, ezért két szűrő létezik:
rcp_{pénznemkód}_currency_filter_before(az ár előtt) ésrcp_{pénznemkód}_currency_filter_after(az ár után). A pénznemkódot kisbetűvel írd.function ag_rcp_mro_currency_filter_after( $formatted_price, $currency_code, $price ) {return $price . ' ' . 'UM';}add_filter( 'rcp_mro_currency_filter_after', 'ag_rcp_mro_currency_filter_after', 10, 3 );Ez az árat „10 UM” alakban jeleníti meg.

A képen a Payments fül látható: a felvett pénznem a pénznem legördülőjében jelenik meg.
A kódot egy saját, egyszerű bővítménybe tedd, ne a témába, hogy téma váltásakor ne vesszen el.
Egy felhasználó tagságainak lekérése
Szekció neve “Egy felhasználó tagságainak lekérése”Három fogalom kapcsolódik egymáshoz:
- A felhasználói fiók (
WP_User): ezzel jelentkezik be valaki az oldalra. - Az ügyfélrekord (
RCP_Customer): a felhasználó jelenlétét rögzíti a bővítményben. Ha valaki még soha nem vásárolt tagságot, nincs ügyfélrekordja. A felhasználói azonosító köti a fiókhoz. - A tagságrekord (
RCP_Membership): magát a tagságot írja le, az ügyfélazonosítóval kapcsolódik az ügyfélhez. Jelenleg egy ügyfélnek legfeljebb egy tagsága lehet, de a jövőben több is lehet, ezért a kódot úgy írd meg, hogy tömbként kezeld.
Így jutsz el a felhasználói azonosítótól a tagságobjektumig:
$user_id = 123; // A felhasználó azonosítója.
// Az ügyfélrekord lekérése a felhasználói azonosító alapján.$customer = rcp_get_customer_by_user_id( $user_id );
// Ha nincs ügyfélrekord, nincs tagság sem.if ( empty( $customer ) ) { return;}
// Az ügyfél tagságai (tömb).$memberships = $customer->get_memberships();
foreach ( $memberships as $membership ) { // $membership egy RCP_Membership objektum. $status = $membership->get_status(); $membership_level_id = $membership->get_object_id();}Tagsági szint metaadatai
Szekció neve “Tagsági szint metaadatai”A tagsági szintekhez is tárolhatsz saját metaadatot. Az API a szokásos WordPress-metaadat-függvényekhez hasonlóan működik, a $rcp_levels_db globális objektumon keresztül:
global $rcp_levels_db;
// Metaadat hozzáadása$rcp_levels_db->add_meta( $level_id = 0, $key = '', $value = '', $unique = true );
// Metaadat frissítése$rcp_levels_db->update_meta( $level_id = 0, $key = '', $value = '', $previous_value = '' );
// Metaadat lekérése$rcp_levels_db->get_meta( $level_id = 0, $key = '', $single = true );
// Metaadat törlése$rcp_levels_db->delete_meta( $level_id = 0, $key = '', $value = '' );Ugyanezt a négy műveletet segédfüggvényekkel is elvégezheted:
rcp_add_membership_level_meta( $level_id, $meta_key, $meta_value, $unique = false );rcp_update_membership_level_meta( $level_id, $meta_key, $meta_value, $prev_value = '' );rcp_get_membership_level_meta( $level_id, $key = '', $single = false );rcp_delete_membership_level_meta( $level_id, $meta_key, $meta_value = '' );Fizetések metaadatai
Szekció neve “Fizetések metaadatai”A fizetési rekordokhoz is társíthatsz saját metaadatot, így az adat közvetlenül ahhoz a fizetéshez tartozik. A fizetési metaadat API a szokásos WordPress-metaadat-függvényekhez szinte teljesen hasonlóan működik, a $rcp_payments_db globális objektumon keresztül:
global $rcp_payments_db;
// Metaadat hozzáadása$rcp_payments_db->add_meta( $payment_id = 0, $key = '', $value = '', $unique = true );
// Metaadat frissítése$rcp_payments_db->update_meta( $payment_id = 0, $key = '', $value = '', $previous_value = '' );
// Metaadat lekérése$rcp_payments_db->get_meta( $payment_id = 0, $key = '', $single = true );
// Metaadat törlése$rcp_payments_db->delete_meta( $payment_id = 0, $key = '', $value = '' );Az első paraméter a fizetés azonosítója. A példák útmutatásnak szólnak: egyéni fejlesztésről van szó, a hibakeresés és az átalakítás a te feladatod.
Az Ultimate Member előfizetés fülének átalakítása
Szekció neve “Az Ultimate Member előfizetés fülének átalakítása”Ha az Ultimate Member integrációt használod, a profil subscription fülének tartalmát lecserélheted. Először el kell távolítani az alapértelmezett kimenetet, utána a szűrővel újra felépíthető a fül.
/** * Az alapértelmezett előfizetés-fül kimenetének eltávolítása. */add_action( 'wp_loaded', function () { if ( ! class_exists( 'RCP_UMUltimateMember2' ) ) { return; }
remove_action( 'um_account_content_hook_subscription', array( RCP_UMUltimateMember2::get_instance(), 'account_page' ) );} );
/** * A fül újraépítése módosított tartalommal. * * Az Ultimate Member ezt a hookot szűrőként futtatja: HTML-szöveget kell visszaadni. * A profil tulajdonosának aktív tagságrekordja kell hozzá. */add_filter( 'um_account_content_hook_subscription', function ( $output, $shortcode_args = array() ) { $user_id = function_exists( 'um_profile_id' ) ? um_profile_id() : get_current_user_id();
if ( ! $user_id || ! function_exists( 'rcp_get_customer_by_user_id' ) ) { return $output; }
$customer = rcp_get_customer_by_user_id( $user_id ); $membership = $customer ? $customer->get_pending_membership() : false;
if ( ! $membership ) { $memberships = $customer ? $customer->get_memberships() : array(); $membership = ! empty( $memberships ) ? reset( $memberships ) : false; }
$level_name = $membership ? $membership->get_membership_level_name() : __( 'None', 'rcp' ); $status = $membership ? $membership->get_status() : ''; $expiration = $membership ? $membership->get_expiration_date() : '';
ob_start(); ?> <div class="um-field um-field-subscription"> <div class="um-field-label"><label><?php esc_html_e( 'Membership', 'rcp' ); ?></label></div> <div class="um-field-area"><?php echo esc_html( $level_name ); ?></div> </div> <div class="um-field um-field-subscription-status"> <div class="um-field-label"><label><?php esc_html_e( 'Status', 'rcp' ); ?></label></div> <div class="um-field-area"><?php echo esc_html( $status ); ?></div> </div> <div class="um-field um-field-subscription-expiration"> <div class="um-field-label"><label><?php esc_html_e( 'Expiration', 'rcp' ); ?></label></div> <div class="um-field-area"><?php echo esc_html( $expiration ); ?></div> </div> <?php
return $output . ob_get_clean();}, 10, 2 );Készült: