Created
May 5, 2025 12:33
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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