WPML
Status
Warten auf Autor
Zugehöriges Plugin/Theme
WP Grid Builder
Themen-Tags
Compatibility

Übersicht über das Problem

Bei der Verwendung von Grid Builder mit WPML und Advanced Custom Fields (ACF) gibt es ein Problem mit Facets, die benutzerdefinierte Felder verwenden. Obwohl die Labels der ACF-Felder im Backend übersetzt werden, werden sie im Frontend nicht übernommen.

Problemumgehung

Bitte stellen Sie sicher, dass Sie über ein vollständiges Backup Ihrer Website verfügen, bevor Sie fortfahren.

Für Select-Felder


  • Öffnen Sie die Datei functions.php Ihres Themes.

  • Fügen Sie den folgenden Code hinzu:
    // 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 );
  • Besuchen Sie die Seite mit den Facets in der Originalsprache, um die Strings zu registrieren.
  • Gehen Sie zur Seite WPML > String-Übersetzung und übersetzen Sie die Strings.

Hinweis: Je nachdem, wie Ihre Facets erstellt wurden, kann dieses andere Snippet hilfreich sein:

// 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 );

Alle bekannten Probleme →