WPML
Status
Vom Autor gelöst
Zugehöriges Plugin/Theme
Hestia Pro
Themen-Tags
Compatibility

Übersicht über das Problem

Wenn Sie das Theme Hestia Pro verwenden, kann ein Problem auftreten, bei dem das benutzerdefinierte Footer-Layout, das unter Design > Benutzerdefinierte Layouts erstellt wurde, nur in der Standardsprache angezeigt wird, unabhängig von den für das Layout verfügbaren Übersetzungen.

Problemumgehung

Bitte stellen Sie sicher, dass Sie ein vollständiges Backup Ihrer Website haben, bevor Sie fortfahren.


  • Öffnen Sie die Datei …/wp-content/themes/hestia-pro/inc/addons/modules/custom_layouts/class-hestia-custom-layouts-module.php.

  • Suchen Sie nach Zeile 210.

  • Ändern Sie:
    	private function map_custom_layouts() {
    		if ( $this->is_builder_preview() ) {
    			return true;
    		}
    		$cache = get_transient( 'custom_layouts_posts_map' );
    		if ( ! empty( $cache ) ) {
    			self::$post_map = $cache;
    
    			return true;
    		}
    		$query = new WP_Query(
    			array(
    				'post_type'              => 'hestia_layouts',
    				'posts_per_page'         => 100,
    				'no_found_rows'          => true,
    				'update_post_meta_cache' => false,
    				'update_post_term_cache' => false,
    				'fields'                 => 'ids',
    				'post_status'            => 'publish',
    			)
    		);
    		if ( ! $query->have_posts() ) {
    			return false;
    		}
    		foreach ( $query->posts as $pid ) {
    			$layout   = get_post_meta( $pid, 'custom-layout-options-layout', true );
    			$priority = get_post_meta( $pid, 'custom-layout-options-priority', true );
    			if ( $layout === 'hooks' ) {
    				$layout = get_post_meta( $pid, 'custom-layout-options-hook', true );
    			}
    			self::$post_map[ $layout ][ $pid ] = $priority;
    		}
    		set_transient( 'custom_layouts_posts_map', self::$post_map, DAY_IN_SECONDS );
    
    		return true;
    	}

  • In:
    	private function map_custom_layouts() {
    		if ( $this->is_builder_preview() ) {
    			return true;
    		}
    
    		// Get the current language code
    		$current_language = apply_filters('wpml_current_language', NULL); // Fallback to WPML's current language
    
    		// Modify the transient key to include the current language
    		$wpml_transient_key = 'custom_layouts_posts_map_' . $current_language;
    
    		$cache = get_transient( $wpml_transient_key );
    		if ( ! empty( $cache ) ) {
    			self::$post_map = $cache;
    
    			return true;
    		}
    		$query = new WP_Query(
    			array(
    				'post_type'              => 'hestia_layouts',
    				'posts_per_page'         => 100,
    				'no_found_rows'          => true,
    				'update_post_meta_cache' => false,
    				'update_post_term_cache' => false,
    				'fields'                 => 'ids',
    				'post_status'            => 'publish',
    			)
    		);
    		if ( ! $query->have_posts() ) {
    			return false;
    		}
    		foreach ( $query->posts as $pid ) {
    			$layout   = get_post_meta( $pid, 'custom-layout-options-layout', true );
    			$priority = get_post_meta( $pid, 'custom-layout-options-priority', true );
    			if ( $layout === 'hooks' ) {
    				$layout = get_post_meta( $pid, 'custom-layout-options-hook', true );
    			}
    			self::$post_map[ $layout ][ $pid ] = $priority;
    		}
    		set_transient( $wpml_transient_key, self::$post_map, DAY_IN_SECONDS );		
    
    		return true;
    	}
  • Löschen Sie danach Ihre Transients.

Alle bekannten Probleme →