WPML
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 );
    
    	}
            

Toutes les anomalies connues →