Visão geral do problema
Ao usar o WP User Manager para adicionar campos personalizados aos perfis, você pode encontrar o seguinte problema: as opções de seleção múltipla dos campos personalizados não são traduzíveis na Tradução de Strings do WPML.
Solução alternativa
Por favor, certifique-se de ter um backup completo do seu site antes de prosseguir.
1. Corrija o plugin de integração (WPUM-WPML)
- Abra o arquivo …/wp-content/plugins/wpum-wpml/includes/class-wpum-wpml-fields.php.
- Procure a linha 20.
- Substitua:
add_action( 'update_wpum_field_meta', array( $this, 'update_meta_strings' ), 10, 4 );
- Por:
add_action( 'updated_wpum_field_meta', array( $this, 'update_meta_strings' ), 10, 4 );
- Depois disso, vá para UsuáriosCampos personalizados, edite pelo menos uma das opções do campo de seleção múltipla e, em seguida, navegue até WPMLTradução de Strings para traduzir os valores.
2. Corrija a saída do front-end no WP User Manager
- Abra o arquivo …/wp-content/plugins/wp-user-manager/includes/fields/types/class-wpum-field-multiselect.php.
- Procure a linha 56.
- Substitua toda a função
get_formatted_output()por:public function get_formatted_output( $field, $value ) { $stored_field_options = $field->get_meta( 'dropdown_options' ); $stored_options = array(); $stored_index = array(); // Keep the plugin's own guard. if ( ! is_array( $stored_field_options ) ) { return ''; } 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(); // Keep the plugin's (array) cast. foreach ( (array) $value as $user_stored_value ) { if ( ! isset( $stored_options[ $user_stored_value ] ) ) { continue; } $label = $stored_options[ $user_stored_value ]; $index = isset( $stored_index[ $user_stored_value ] ) ? $stored_index[ $user_stored_value ] : 0; $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 ); }