WPML
Status
Aguardando o autor
Plugin/tema relacionado
Ultimate Membership Pro
Tags de tópico
Compatibility

Visão geral do problema

Ao usar o Ultimate Membership Pro com o WPML, você pode enfrentar um problema em que os valores das caixas de seleção usados nos perfis de membros e nos filtros de diretório não são traduzíveis. e impede que os rótulos traduzidos apareçam corretamente nas páginas de diretório ou formulários traduzidos.

Solução alternativa

Certifique-se de ter um backup completo do seu site antes de prosseguir.

1- Exclua as traduções incorretas

  • Vá para WPML > Tradução de Strings
  • Filtre por Completo
  • Pesquise por strings sob o nome do campo [ihc_user_fields]
  • Selecione todas essas strings e exclua-as – elas são strings de valor e não devem ser traduzidas.

2- Modifique o modelo de filtro do frontend

  • Abra: wp-content/plugins/indeed-membership-pro/public/views/listing_users-filter.php
  • Procure por: Linha 167 sob o case ‘checkbox’
  • Substitua:

<?php
foreach ($field['values'] as $v){
    if (is_array($get_value)){
        $checked = (in_array($v, $get_value)) ? 'checked' : '';
    } else {
        $checked = ($v==$get_value) ? 'checked' : '';
    }
    ?>
    <div class="iump-form-checkbox">
        <input type="checkbox" name="<?php echo esc_attr($field['name']);?>[]" value="<?php echo esc_attr(ihc_correct_text($v));?>" <?php echo esc_attr($checked);?> />
        <?php echo esc_html(ihc_correct_text($v));?>
    </div>
    <?php
}
?>

Por:

<?php
foreach ($field['values'] as $v){
    if (is_array($get_value)){
        $checked = (in_array($v, $get_value)) ? 'checked' : '';
    } else {
        $checked = ($v==$get_value) ? 'checked' : '';
    }

    // WPML: Separate value and label
    $wpml_original_value = ihc_correct_text($v);
    $wpml_string_name = 'checkbox_option_' . $field['name']; 
    do_action( 'wpml_register_single_string', 'ihc', $wpml_string_name . '_' . sanitize_title($v), $wpml_original_value );
    $wpml_translated_label = apply_filters( 'wpml_translate_single_string', $wpml_original_value, 'ihc', $wpml_string_name . '_' . sanitize_title($v) );
?>
    <div class="iump-form-checkbox">
        <input type="checkbox" name="<?php echo esc_attr($field['name']);?>[]" value="<?php echo esc_attr(ihc_correct_text($v));?>" <?php echo esc_attr($checked);?> />
        <?php echo esc_html($wpml_translated_label); ?>
    </div>
<?php
}
?>

3- Corrija os rótulos da caixa de seleção do formulário de registro

  • Abra: wp-content/plugins/indeed-membership-pro/classes/IndeedForms.php
  • Procure por: A função checkbox (por volta da linha 129)
  • Substitua:

$output .= ihc_correct_text( $v );
Por:
$output .= __( ihc_correct_text( $v ), 'ihc' );</ul>

4- Acione o registro de strings

  • Visite a página do diretório no frontend para carregar novas strings.
  • Vá para WPML > Tradução de Strings e traduza apenas as strings recém-registradas sob o domínio “ihc” (nomeadas como checkbox_option_name).

Todos os problemas conhecidos →