Created
April 1, 2015 15:01
-
-
Save strangerstudios/eda57836b6f2d9315a5d to your computer and use it in GitHub Desktop.
Translate Membership Level Names with 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
/* | |
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'); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
An updated version that also translated descriptions can be found here: https://gist.github.com/ideadude/0ddfa9b9e4f313f4f08c2c55a41f8441