WPML
Stato
In attesa dell’autore
Plugin/tema correlato
WP User Manager
Tag dell’argomento
Compatibility

Panoramica del problema

Quando usi WP User Manager per aggiungere campi personalizzati ai profili, potresti riscontrare il seguente problema: le opzioni di selezione multipla dei campi personalizzati non sono traducibili nella Traduzione stringhe di WPML.

Soluzione alternativa

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

1. Correggi il plugin di integrazione (WPUM-WPML)


  • Apri il file …/wp-content/plugins/wpum-wpml/includes/class-wpum-wpml-fields.php.

  • Cerca la riga 20.

  • Sostituisci:
    add_action( 'update_wpum_field_meta', array( $this, 'update_meta_strings' ), 10, 4 );
            


  • Con:
    add_action( 'updated_wpum_field_meta', array( $this, 'update_meta_strings' ), 10, 4 );
            

  • Dopodiché, vai su Utenti > Campi personalizzati, modifica almeno una delle opzioni del campo a selezione multipla, quindi vai su WPML > Traduzione stringhe per tradurre i valori.

2. Correggi l’output del front-end in WP User Manager


  • Apri il file …/wp-content/plugins/wp-user-manager/includes/fields/types/class-wpum-field-multiselect.php.

  • Cerca la riga .

  • Sostituisci l’intera funzione get_formatted_output() con:
    	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 );
    
    	}
            

Tutti i problemi noti →