WPML
Estado
Resuelto por el autor
Plugin/tema relacionado
Hestia Pro
Etiquetas de temática
Compatibility

Resumen del problema

Si está utilizando el tema Hestia Pro, es posible que experimente un problema por el cual el diseño personalizado del pie de página creado en Apariencia > Custom layouts solo se muestra en el idioma predeterminado, independientemente de las traducciones disponibles para el diseño.

Solución alternativa

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


  • Abra el archivo …/wp-content/themes/hestia-pro/inc/addons/modules/custom_layouts/class-hestia-custom-layouts-module.php.

  • Busque la línea 210.

  • Cambie:
    	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;
    	}

  • Por:
    	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;
    	}
  • Después de eso, elimine los transients.

Todos los problemas conocidos →