在 wordpress 中使用付费会员专业插件翻译会员级别

问题描述 投票:0回答:0

我有一个多语言网站并使用付费会员专业插件,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' );
php wordpress membership learnpress
© www.soinside.com 2019 - 2024. All rights reserved.