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 );
            

ปัญหาที่ทราบแล้วทั้งหมด →