- ステータス
- 開発者により解決済み
- 解決されたバージョン
- Bricks 2.3
- 関連するプラグイン/テーマ
- Bricks Theme
問題の概要
WPMLでBricksを使用している場合、デフォルト言語の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 );