Forked from strangerstudios/my_init_membership_level_translate.php
Last active
November 3, 2021 13:55
-
-
Save ideadude/0ddfa9b9e4f313f4f08c2c55a41f8441 to your computer and use it in GitHub Desktop.
Translate Membership Level Names and Descriptions 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
<?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' ); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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/