- الحالة
- محلولة بواسطة المطور
- تم حلها في
- 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 );