WPML
Statut
Résolu par l’auteur
Résolu dans
Bricks 2.3
Extension/thème associé
Bricks Theme

Aperçu de l’anomalie

Lorsque vous utilisez Bricks avec WPML, vous pouvez rencontrer un problème où l’ouverture de l’éditeur Bricks pour la langue par défaut redirige vers une URL incorrecte avec un répertoire de langue supplémentaire, ce qui entraîne une erreur 404. Cela peut se produire lorsque WPML est configuré sur Utiliser le répertoire pour la langue par défaut.

Solution de contournement

Solution de contournement 1


Correction facile (sans code)

  • Allez dans Bricks > Paramètres > Builder

  • Réglez la langue du constructeur sur « Site Default » et enregistrez

Solution de contournement 2


Veuillez vous assurer d’avoir une sauvegarde complète de votre site avant de continuer.

  • Ajoutez le code suivant au fichier functions.php de votre thème.
    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 );
            

Toutes les anomalies connues →