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

Todos los problemas conocidos →