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

جميع المشاكل المعروفة →