Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save strangerstudios/eda57836b6f2d9315a5d to your computer and use it in GitHub Desktop.
Save strangerstudios/eda57836b6f2d9315a5d to your computer and use it in GitHub Desktop.
Translate Membership Level Names with Paid Memberships Pro
/*
Filter membership level names for translating.
Add this code to a custom plugin or your active theme's functions.php file.
Be sure to update the $pmpro_translated_level_names array. Add a sub array for each locale.
The sub array keys should be the membership level ids, and values should be translated membership names.
*/
//defining translated level names.
global $pmpro_translated_level_names;
$pmpro_translated_level_names['es_ES'] = array(
1 => "Primero Nivel",
2 => "Segundo Nivel"
);
//filter pmpro_levels global
function my_init_membership_level_translate()
{
global $pmpro_translated_level_names;
if(empty($pmpro_translated_level_names))
return;
$site_locale = get_locale();
foreach($pmpro_translated_level_names as $locale => $level_names)
{
if($locale == $site_locale)
{
global $pmpro_levels;
$pmpro_levels = pmpro_getAllLevels(true, true);
//translate
foreach($level_names as $level_id => $name)
if(!empty($pmpro_levels[$level_id]))
$pmpro_levels[$level_id]->name = $name;
}
}
}
add_action('init', 'my_init_membership_level_translate', 1);
//filter levels page
function my_pmpro_levels_array($levels)
{
global $pmpro_translated_level_names;
if(empty($pmpro_translated_level_names))
return;
$site_locale = get_locale();
foreach($pmpro_translated_level_names as $locale => $level_names)
{
if($locale == $site_locale)
{
//translate
foreach($level_names as $level_id => $name)
if(!empty($levels[$level_id]))
$levels[$level_id]->name = $name;
}
}
return $levels;
}
add_filter('pmpro_levels_array', 'my_pmpro_levels_array');
//filter checkout level
function my_pmpro_checkout_level_translate($level)
{
global $pmpro_translated_level_names;
if(empty($pmpro_translated_level_names))
return $level;
$site_locale = get_locale();
foreach($pmpro_translated_level_names as $locale => $level_names)
{
if($locale == $site_locale)
{
if(!empty($level_names[$level->id]))
{
$new_name = $level_names[$level->id];
$level->name = $new_name;
}
}
}
return $level;
}
add_filter('pmpro_checkout_level', 'my_pmpro_checkout_level_translate');
//fix current user's level
function my_pmpro_after_set_current_user_translate()
{
global $current_user, $pmpro_translated_level_names;
if(empty($pmpro_translated_level_names) || empty($current_user->membership_level))
return;
$site_locale = get_locale();
foreach($pmpro_translated_level_names as $locale => $level_names)
{
if($locale == $site_locale)
{
if(!empty($level_names[$current_user->membership_level->id]))
{
$new_name = $level_names[$current_user->membership_level->id];
$current_user->membership_level->name = $new_name;
}
}
}
}
add_action('pmpro_after_set_current_user', 'my_pmpro_after_set_current_user_translate');
@ideadude
Copy link

ideadude commented Dec 2, 2019

An updated version that also translated descriptions can be found here: https://gist.github.com/ideadude/0ddfa9b9e4f313f4f08c2c55a41f8441

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment