- สถานะ
- แก้ไขแล้วโดยผู้พัฒนา
- แก้ไขใน
- 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 );