WPML
الحالة
محلول
النوع
خطأ برمجي
تم الإبلاغ عنه لـ
WPML Multilingual CMS 4.6.7
وسوم الموضوع
Bug

نظرة عامة على المشكلة

إذا كنت تستخدم خيار استخدام الدليل للغة الافتراضية وأضفت مكون مبدل اللغة في صفحة الجذر، فإنه يشير بشكل خاطئ إلى اللغة الافتراضية بدون الدليل. (أي '/' بدلاً من '/en’).

تمنع هذه المشكلة المستخدمين من تحديد اللغة الافتراضية في هذه الصفحات المحددة.

حل بديل مؤقت

يُرجى التأكد من أخذ نسخة احتياطية كاملة لموقعك قبل المتابعة.


  • افتح الملف …/wp-content/plugins/sitepress-multilingual-cms/classes/language-switcher/class-wpml-ls-model-build.php.

  • ابحث عن السطر 64.

  • غيّر:
    	public function get( $slot, $template_data = [] ) {
    		$vars = [];
    
    		$vars['current_language_code'] = $this->sitepress->get_current_language();
    		$vars['languages']             = $this->get_language_items( $slot, $template_data );
    		$vars['css_classes']           = $this->get_slot_css_classes( $slot );
    		$vars['css_classes_link']      = self::LINK_CSS_CLASS;
    
    		$vars = $this->add_backward_compatibility_to_wrapper( $vars, $slot );
    
    		return $this->sanitize_vars( $vars, $this->allowed_vars );
    	}

  • إلى:
    	public function get( $slot, $template_data = [] ) {
    		global $sitepress;
    		$vars = [];
    
    		$vars['current_language_code'] = $this->sitepress->get_current_language();
    		$vars['languages']             = $this->get_language_items( $slot, $template_data );
    		$vars['css_classes']           = $this->get_slot_css_classes( $slot );
    		$vars['css_classes_link']      = self::LINK_CSS_CLASS;
    		if(true === $sitepress->get_setting( 'urls' )['directory_for_default_language'] ) {
    			$vars['current_language_code'] = "root";
    		}
    		$vars = $this->add_backward_compatibility_to_wrapper( $vars, $slot );
    
    		return $this->sanitize_vars( $vars, $this->allowed_vars );
    	}

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