- Statut
- En attente de l’auteur
- Extension/thème associé
- WP User Manager
- Étiquettes de sujet
- Compatibility
Aperçu de l’anomalie
Lorsque vous utilisez WP User Manager pour ajouter des champs personnalisés aux profils, vous pouvez rencontrer le problème suivant : les options de sélection multiple des champs personnalisés ne sont pas traduisibles dans la Traduction de chaînes de WPML.
Solution de contournement
Veuillez vous assurer d’avoir une sauvegarde complète de votre site avant de continuer.
1. Corrigez l’extension d’intégration (WPUM-WPML)
- Ouvrez le fichier …/wp-content/plugins/wpum-wpml/includes/class-wpum-wpml-fields.php.
- Cherchez la ligne 20.
- Remplacez :
add_action( 'update_wpum_field_meta', array( $this, 'update_meta_strings' ), 10, 4 );
- Par :
add_action( 'updated_wpum_field_meta', array( $this, 'update_meta_strings' ), 10, 4 );
- Ensuite, allez dans Comptes > Champs personnalisés, modifiez au moins l’une des options du champ à sélection multiple, puis accédez à WPML > Traduction de chaînes pour traduire les valeurs.
2. Corrigez la sortie sur l’interface publique dans WP User Manager
- Ouvrez le fichier …/wp-content/plugins/wp-user-manager/includes/fields/types/class-wpum-field-multiselect.php.
- Cherchez la ligne .
- Remplacez toute la fonction
get_formatted_output()par :
public function get_formatted_output( $field, $value ) { $stored_field_options = $field->get_meta( 'dropdown_options' ); $stored_options = array(); $stored_index = array(); // Build lookup maps: value => label and value => original index foreach ( $stored_field_options as $key => $stored_option ) { $val = isset( $stored_option['value'] ) ? $stored_option['value'] : $key; $lbl = isset( $stored_option['label'] ) ? $stored_option['label'] : ''; $stored_options[ $val ] = $lbl; $stored_index[ $val ] = $key; } $values = array(); foreach ( $value as $user_stored_value ) { if ( ! isset( $stored_options[ $user_stored_value ] ) ) { continue; } $label = $stored_options[ $user_stored_value ]; // Determine original index for this option so we can match textdomain package $index = isset( $stored_index[ $user_stored_value ] ) ? $stored_index[ $user_stored_value ] : 0; // Translation via WPML. $translated_label = apply_filters( 'wpml_translate_single_string', $label, 'wpum-fields-wpum-field-' . $field->get_ID(), 'wpum-field-dropdown_options_' . $index ); $values[] = $translated_label; } return implode( ', ', $values ); }