WPML
Estado
Resuelto por el autor
Resuelto en
Bricks 2.3
Plugin/tema relacionado
Bricks Theme

Resumen del problema

Al usar Bricks con WPML, es posible que experimente un problema en el que abrir el editor de Bricks para el idioma predeterminado redirige a una URL incorrecta con un directorio de idioma adicional, lo que provoca un error 404. Esto puede ocurrir cuando WPML está configurado para usar directorio para el idioma por defecto.

Solución alternativa

Solución alternativa 1


Solución sencilla (sin código)

  • Vaya a Bricks > Configuración > Builder

  • Establezca el idioma del constructor en «Site Default» y guarde

Solución alternativa 2


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

  • Añada el siguiente código al archivo functions.php de su tema.
    add_action( 'after_setup_theme', function () {
    	if ( ! defined( 'ICL_SITEPRESS_VERSION' ) || ! class_exists( 'BricksTheme' ) ) {
    		return;
    	}
    
    	$bricks = BricksTheme::instance();
    
    	// 1. Prevent Bricks from switching language
    	if ( ! empty( $bricks->wpml ) ) {
    		remove_action( 'bricks/builder/switch_locale', [ $bricks->wpml, 'switch_builder_languge' ] );
    	}
    
    	// 2. Instead switch UI locale
    	add_action( 'bricks/builder/switch_locale', function ( $locale ) {
    		if ( empty( $locale ) || empty( $_GET['bricks'] ) || $_GET['bricks'] !== 'run' ) {
    			return;
    		}
    
    		// prevent memory exhausion I got on my sandbox
    		static $lock = false;
    		if ( $lock ) {
    			return;
    		}
    		$lock = true;
    
    		try {
    			// Switch UI locale
    			switch_to_locale( $locale );
    			// Reload Bricks theme textdomain 
    			unload_textdomain( 'bricks' );
    			load_theme_textdomain( 'bricks', get_template_directory() . '/languages' );
    		} finally {
    			$lock = false;
    		}
    
    	}, 5, 1 );
    
    }, 20 );
            

Todos los problemas conocidos →