- Estado
- Esperando al autor
- Plugin/tema relacionado
- WP User Manager
- Etiquetas de temática
- Compatibility
Resumen del problema
Al usar WP User Manager para añadir campos personalizados a los perfiles, es posible que experimente el siguiente problema: las opciones de selección múltiple de los campos personalizados no son traducibles en WPML Traducción de cadenas.
Solución alternativa
Por favor, asegúrese de tener una copia de seguridad completa de su sitio antes de continuar.
1. Corrija el plugin de integración (WPUM-WPML)
- Abra el archivo …/wp-content/plugins/wpum-wpml/includes/class-wpum-wpml-fields.php.
- Busque la línea 20.
- Reemplace:
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 );
- Después de eso, vaya a Usuarios > Campos personalizados, edite al menos una de las opciones del campo de selección múltiple y luego navegue a WPML > Traducción de cadenas para traducir los valores.
2. Corrija la salida del front-end en WP User Manager
- Abra el archivo …/wp-content/plugins/wp-user-manager/includes/fields/types/class-wpum-field-multiselect.php.
- Busque la línea .
- Reemplace toda la función
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(); // 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 ); }