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