我有一个多语言网站并使用付费会员专业插件,WPML 插件不支持此插件,会员级别存储在数据库中,因此我尝试使用 PHP 翻译会员级别,但翻译不t出现,我不知道我的代码中有什么错误。 我从插件团队找到了这篇文章 https://www.paidmembershipspro.com/translate-your-membership-level-names-with-paid-memberships-pro/ 但解决方案不起作用
global $pmpro_translated_levels;
$pmpro_translated_levels['ar_AE'] = array(
2 => array(
'name' => 'سدّد الدفعة الأولى - لايڤ دبي',
'description' => 'الرصيد المتبقي = 3550 دولار',
),
13 => array(
'name' => 'ادفع كامل المبلغ - لايڤ دبي ',
),
);
// 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' );