Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save davidmutero/ff289f7cc2d3db55afc9a73ce3ba0b50 to your computer and use it in GitHub Desktop.
Save davidmutero/ff289f7cc2d3db55afc9a73ce3ba0b50 to your computer and use it in GitHub Desktop.
Change the words like 'Membership' to 'Subscription' by Level in Checkout Emails in Paid Memberships Pro
<?php
/**
* Dynamically replace instances of "Membership" with custom labels
* based on the user's membership level. Variables like !!first_name!!
* are preserved and skipped during replacements.
*
* You can add this recipe to your site by creating a custom plugin
* or using the Code Snippets plugin available for free in the WordPress repository.
* https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/
*/
function my_gettext_membership_dynamic( $translated_text, $original_text, $domain ) {
if ( is_admin() || ( $domain !== 'paid-memberships-pro' && strpos( $domain, 'pmpro-' ) === false ) ) {
return $translated_text;
}
$current_user_id = get_current_user_id();
if ( $current_user_id ) {
$level = pmpro_getMembershipLevelForUser( $current_user_id );
if ( $level ) {
$level_id = $level->id;
// Split by PMPro variables so we don't touch them (e.g. !!membership_level_name!!)
$segments = preg_split( '/(!![^!]+!!)/', $translated_text, -1, PREG_SPLIT_DELIM_CAPTURE );
$processed = '';
foreach ( $segments as $segment ) {
if ( preg_match( '/^!![^!]+!!$/', $segment ) ) {
$processed .= $segment; // Don't change PMPro tokens
} else {
// Level 1:
if ( $level_id == 1 ) {
$segment = str_replace( ['Membership', 'membership'], ['Enrollment', 'enrollment'], $segment );
}
// Level 2:
elseif ( $level_id == 2 ) {
$segment = str_replace( ['membership account', 'membership'], ['account', 'account'], $segment );
}
// Level 3+ (3 and above):
elseif ( $level_id >= 3 ) {
$segment = str_replace(
['Membership Level', 'membership level', 'Membership', 'membership'],
['Subscription', 'subscription', 'Subscription', 'subscription'],
$segment
);
}
$processed .= $segment;
}
}
return $processed;
}
}
return $translated_text;
}
add_filter( 'gettext', 'my_gettext_membership_dynamic', 10, 3 );
function my_ngettext_membership_dynamic( $translated, $single, $plural, $number, $domain ) {
return my_gettext_membership_dynamic( $translated, $number == 1 ? $single : $plural, $domain );
}
add_filter( 'ngettext', 'my_ngettext_membership_dynamic', 10, 5 );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment