WPML
状态
已由作者解决
解决于
Bricks 2.3
相关插件/主题
Bricks Theme

问题概述

Bricks与 WPML 结合使用时,您可能会遇到一个问题:为默认语言打开 Bricks 编辑器时,会重定向到带有额外语言目录的错误 URL,从而导致 404 错误。当 WPML 设置为为默认语言使用目录时,可能会发生这种情况。

临时解决方法

临时解决方法 1


简单修复(无需代码)

  • 前往 Bricks > 设置 > Builder

  • 将 builder 语言设置为“Site Default”并保存

临时解决方法 2


在继续操作之前,请确保对您的站点进行完整备份

  • 将以下代码添加到主题的 functions.php 文件中。
    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 );
            

所有已知问题 →