WPML
Estado
Esperando al autor
Plugin/tema relacionado
WP Grid Builder
Etiquetas de temática
Compatibility

Resumen del problema

Al usar Grid Builder con WPML y Advanced Custom Fields (ACF), hay un problema con las Facetas que usan campos personalizados. Aunque las etiquetas de los campos de ACF están traducidas en el backend, no se reflejan en el frontend.

Solución alternativa

Por favor, asegúrese de tener una copia de seguridad completa de su sitio antes de continuar.

Para los campos Select


  • Abra el archivo functions.php de su tema.

  • Añada el siguiente código:
    // WPML Workaround for wpmlsupp-11647
    function wpml_wpmlsupp11647_translate_facet_choices( $choices, $facet ) {
    
    	if ( class_exists('Sitepress') ) {
    		foreach ($choices as &$choice) {
    			$string = $choice->facet_name;
    			$textdomain = 'facets';
    			$string_name = 'Facet: '.substr($string, 0, 20);
    		
    			if ( apply_filters('wpml_default_language', NULL ) == apply_filters( 'wpml_current_language', NULL )) {
    				do_action( 'wpml_register_single_string', $textdomain, $string_name, $string );
    			}	
    			// Apply the translation to the string
    			$choice->facet_name = apply_filters('wpml_translate_single_string', $string , $textdomain, $string_name);
    		}
    	}
    
    	return $choices;
    
    }
    
    add_filter( 'wp_grid_builder/facet/choices', 'wpml_wpmlsupp11647_translate_facet_choices', 10, 2 );
  • Visite la página con las facetas en el idioma original para registrar las cadenas.
  • Vaya a la página WPML > Traducción de cadenas y traduzca las cadenas.

Nota: Dependiendo de cómo se hayan creado sus facetas, este otro fragmento de código puede resultarle útil:

// WPML Workaround for compsupp-7453
function wpml_compsupp7453_translate_facet_block_custom_field( $output ) {
 
    if ( class_exists('Sitepress') ) {
        if( is_string($output) ) {

            $string = $output;
            $textdomain = 'facets';
            $string_name = 'Facet: '.substr($string, 0, 20);
         
            if ( apply_filters('wpml_default_language', NULL ) == apply_filters( 'wpml_current_language', NULL )) {
                do_action( 'wpml_register_single_string', $textdomain, $string_name, $string );
            }   
            // Apply the translation to the string
            $output = apply_filters('wpml_translate_single_string', $string , $textdomain, $string_name);
        }
    }
 
    return $output ;
 
}
 
add_filter( 'wp_grid_builder/block/custom_field', 'wpml_compsupp7453_translate_facet_block_custom_field', 99, 2 );

Todos los problemas conocidos →