Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save ideadude/0ddfa9b9e4f313f4f08c2c55a41f8441 to your computer and use it in GitHub Desktop.
Save ideadude/0ddfa9b9e4f313f4f08c2c55a41f8441 to your computer and use it in GitHub Desktop.
Translate Membership Level Names and Descriptions with Paid Memberships Pro
<?php
/*
* Filter membership level names and descriptions for translating.
*
* Add this code to a custom plugin or your active theme's functions.php file.
* Be sure to update the $pmpro_translated_levels array. Add a sub array for each locale.
* The sub array keys should be the membership level ids,
* and values should be an array with the name and description to translate to.
*
*/
// Defining translated levels.
global $pmpro_translated_levels;
$pmpro_translated_levels['es_ES'] = array(
1 => array(
'name' => 'Primero Nivel',
'description' => 'La descripción del nivel.',
'confirmation' => 'Mensaje de confirmación',
),
2 => array(
'name' => 'Segundo Nivel',
'description' => 'La descripción del nivel.',
'confirmation' => 'Mensaje de confirmación.',
),
);
// Filter $pmpro_levels global.
function my_init_membership_level_translate() {
global $pmpro_translated_levels;
if ( empty( $pmpro_translated_levels ) ) {
return;
}
$site_locale = get_locale();
foreach ( $pmpro_translated_levels as $locale => $localized_levels ) {
if ( $locale == $site_locale ) {
global $pmpro_levels;
$pmpro_levels = pmpro_getAllLevels( true, true );
// Translate
foreach ( $localized_levels as $level_id => $localized_level ) {
foreach( $pmpro_levels as $level_key => $pmpro_level ) {
if ( $level_id == $pmpro_level->id ) {
foreach ( $localized_level as $key => $value ) {
$pmpro_levels[$level_key]->$key = $value;
}
}
}
}
}
}
}
add_action( 'init', 'my_init_membership_level_translate', 1 );
// Filter levels page and user levels.
function my_pmpro_levels_array( $levels ) {
global $pmpro_translated_levels;
if ( empty( $pmpro_translated_levels ) ) {
return;
}
$site_locale = get_locale();
foreach ( $pmpro_translated_levels as $locale => $localized_levels ) {
if ( $locale == $site_locale ) {
// Translate
foreach ( $localized_levels as $level_id => $localized_level ) {
foreach( $levels as $level_key => $level ) {
if ( $level_id == $level->id ) {
foreach ( $localized_level as $key => $value ) {
$levels[$level_key]->$key = $value;
}
}
}
}
}
}
return $levels;
}
add_filter( 'pmpro_levels_array', 'my_pmpro_levels_array' ); // filter all levels
add_filter( 'pmpro_get_membership_levels_for_user', 'my_pmpro_levels_array' ); // filter user levels
// Filter checkout level
function my_pmpro_checkout_level_translate( $level ) {
global $pmpro_translated_levels;
if ( empty( $pmpro_translated_levels ) ) {
return $level;
}
$site_locale = get_locale();
foreach ( $pmpro_translated_levels as $locale => $localized_levels ) {
if ( $locale == $site_locale ) {
if ( ! empty( $localized_levels[$level->id] ) ) {
foreach ( $localized_levels[$level->id] as $key => $value ) {
$level->$key = $value;
}
}
}
}
return $level;
}
add_filter( 'pmpro_checkout_level', 'my_pmpro_checkout_level_translate' );
@laurenhagan0306
Copy link

This recipe is included in the blog post on "Translate Your Membership Level Information with Paid Memberships Pro" at Paid Memberships Pro here: https://www.paidmembershipspro.com/translate-your-membership-level-names-with-paid-memberships-pro/

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