- Statut
- En attente de l’auteur
- Extension/thème associé
- Ultimate Membership Pro
- Étiquettes de sujet
- Compatibility
Aperçu de l’anomalie
Lorsque vous utilisez Ultimate Membership Pro avec WPML, vous pourriez rencontrer un problème où les valeurs des cases à cocher utilisées dans les profils de membres et les filtres d’annuaire sont non traduisibles. Cela empêche les libellés traduits de s’afficher correctement sur les pages d’annuaire ou les formulaires traduits.
Solution de contournement
Assurez-vous d’avoir une sauvegarde complète de votre site avant de continuer.
1- Supprimez les traductions incorrectes
- Allez dans WPML > Traduction de chaînes
- Filtrez par Traduction terminée
- Recherchez les chaînes de texte sous le nom de champ [ihc_user_fields]
- Sélectionnez toutes ces chaînes de texte et supprimez-les – ce sont des chaînes de valeurs et elles ne doivent pas être traduites.
2- Modifiez le modèle de filtre front-end
- Ouvrez : wp-content/plugins/indeed-membership-pro/public/views/listing_users-filter.php
- Cherchez : la ligne 167 sous le cas ‘checkbox’
Remplacez :
<?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
}
?>
Par :
<?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- Corrigez les libellés des cases à cocher du formulaire d’inscription
- Ouvrez : wp-content/plugins/indeed-membership-pro/classes/IndeedForms.php
- Cherchez : la fonction checkbox (autour de la ligne 129)
Remplacez :
$output .= ihc_correct_text( $v );Par :
$output .= __( ihc_correct_text( $v ), 'ihc' );</ul>
4- Déclenchez l’enregistrement des chaînes de texte
- Visitez la page du répertoire sur le front-end pour charger les nouvelles chaînes de texte.
- Allez dans WPML > Traduction de chaînes et traduisez uniquement les chaînes de texte nouvellement enregistrées sous le domaine « ihc » (nommées comme checkbox_option_name).