WPML
Stato
In attesa dell’autore
Plugin/tema correlato
Ultimate Membership Pro
Tag dell’argomento
Compatibility

Panoramica del problema

Quando usi Ultimate Membership Pro con WPML, potresti riscontrare un problema per cui i valori delle caselle di controllo utilizzati nei profili dei membri e nei filtri delle directory non sono traducibili. Ciò impedisce alle etichette tradotte di apparire correttamente nelle pagine delle directory o nei moduli tradotti.

Soluzione alternativa

Assicurati di avere un backup completo del tuo sito prima di procedere.

1- Elimina le traduzioni errate

  • Vai su WPML > Traduzione stringhe
  • Filtra per La traduzione è completata
  • Cerca le stringhe sotto il nome del campo [ihc_user_fields]
  • Seleziona tutte queste stringhe ed eliminale: sono stringhe di valore e non dovrebbero essere tradotte.

2- Modifica il template del filtro del frontend

  • Apri: wp-content/plugins/indeed-membership-pro/public/views/listing_users-filter.php
  • Cerca: la riga 167 sotto il caso “checkbox”
  • Sostituisci:

<?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
}
?>

Con:

<?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- Correggi le etichette delle caselle di controllo del modulo di registrazione

  • Apri: wp-content/plugins/indeed-membership-pro/classes/IndeedForms.php
  • Cerca: la funzione checkbox (intorno alla riga 129)
  • Sostituisci:

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

4- Attiva la registrazione delle stringhe

  • Visita la pagina della directory sul frontend per caricare le nuove stringhe.
  • Vai su WPML > Traduzione stringhe e traduci solo le stringhe appena registrate nel dominio “ihc” (denominate come checkbox_option_name).

Tutti i problemi noti →