WPML
Status
Vom Autor gelöst
Gelöst in
Bricks 2.3
Zugehöriges Plugin/Theme
Bricks Theme

Übersicht über das Problem

Wenn Sie Bricks mit WPML verwenden, kann das Problem auftreten, dass das Öffnen des Bricks-Editors für die Standardsprache auf eine falsche URL mit einem zusätzlichen Sprachverzeichnis umleitet, was zu einem 404-Fehler führt. Dies kann passieren, wenn WPML auf Verzeichnis für Standardsprache verwenden eingestellt ist.

Problemumgehung

Problemumgehung 1


Einfache Lösung (ohne Code)

  • Gehen Sie zu Bricks > Einstellungen > Builder

  • Stellen Sie die Builder-Sprache auf „Site Default“ ein und speichern Sie

Problemumgehung 2


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

  • Fügen Sie den folgenden Code zur Datei functions.php Ihres Themes hinzu.
    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 );
            

Alle bekannten Probleme →