WPML
Estado
Resuelto
Notificado para
WPML Multilingual CMS 4.5.14
Resuelto en
WPML 4.6.4
Plugin/tema relacionado
Elementor
Etiquetas de temática
Compatibility

Resumen del problema

Si utiliza la función de plantilla de bucle de Elementor, los botones no se traducen en el front-end aunque estén disponibles para su traducción en el Editor de traducción avanzado.

Solución alternativa

Asegúrese de hacer una copia de seguridad completa de su sitio antes de continuar.


  1. Abra el archivo /wp-content/plugins/sitepress-multilingual-cms/addons/wpml-page-builders/classes/Integrations/Elementor/class-wpml-elementor-translate-ids.php.

  2. Busque la línea 108.

  3. Reemplace el método WPML_Elementor_Translate_IDs::translate_global_widget_ids():
    public function translate_global_widget_ids( $data_array, $post_id ) {
    		foreach ( $data_array as &$data ) {
    			if ( isset( $data['elType'] ) && 'widget' === $data['elType'] ) {
    				if ( 'global' === $data['widgetType'] ) {
    					$data['templateID'] = $this->translate_id( $data['templateID'] );
    				} elseif ( 'template' === $data['widgetType'] ) {
    					$data['settings']['template_id'] = $this->translate_id( $data['settings']['template_id'] );
    				}
    			}
    			$data['elements'] = $this->translate_global_widget_ids( $data['elements'], $post_id );
    		}
    
    		return $data_array;
    	}

    Por:

    public function translate_global_widget_ids( $data_array, $post_id ) {
            foreach ( $data_array as &$data ) {
                if ( isset( $data['elType'] ) && 'widget' === $data['elType'] ) {
                    if ( 'global' === $data['widgetType'] ) {
                        $data['templateID'] = $this->translate_id( $data['templateID'] );
                    } elseif ( 'template' === $data['widgetType'] || 'loop-grid' === $data['widgetType'] || 'loop-carousel' === $data['widgetType']) {
                        $data['settings']['template_id'] = $this->translate_id( $data['settings']['template_id'] );
                    } 
                }
                $data['elements'] = $this->translate_global_widget_ids( $data['elements'], $post_id );
            }
      
            return $data_array;
        }


  4. Traduzca la plantilla de loop de Elementor en WPMLGestión de traducción.

Todos los problemas conocidos →