WPML
الحالة
محلولة
أُبلغ عنها لـ
WPML Multilingual CMS 4.6.3
تم حلها في
WPML 4.6.4
وسوم الموضوع
Bug

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

عند إنشاء قائمة وتعيينها إلى موقع في المظهرالقوائم، يؤدي تحديث الصفحة إلى إلغاء تحديد مربع اختيار الموقع. ومع ذلك، لا تزال القائمة تُعرض بشكل صحيح في الواجهة الأمامية.

تحدث هذه المشكلة عندما تكون معرفات المصطلحات غير مساوية لمعرفات تصنيف المصطلحات، وهو ما يمكن أن يحدث في المواقع التي تعمل بنظام WordPress منذ الإصدار 4.1 أو أقدم كما هو موضح هنا.

حل بديل مؤقت

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


  1. افتح …/sitepress-multilingual-cms/inc/taxonomy-term-translation/wpml-term-translation.class.php.

  2. ابحث عن السطر 118.

  3. غيّر:
    	private function maybe_warm_term_id_cache() {
    
    		if ( ! isset( $this->ttids ) || ! isset( $this->term_ids ) ) {
    
    			$data           = $this->wpdb->get_results( "	SELECT wpml_translations.element_id, tax.term_id, tax.taxonomy
    													 " . $this->get_element_join() . "
    													 JOIN {$this->wpdb->terms} terms
    													  ON terms.term_id = tax.term_id
    													 WHERE tax.term_id != tax.term_taxonomy_id",
    			                                      ARRAY_A );
    			$this->term_ids = array();
    			$this->ttids    = array();
    			foreach ( $data as $row ) {
    				$this->ttids[ $row['term_id'] ]                     = isset( $this->ttids[ $row['term_id'] ] )
    					? $this->ttids[ $row['term_id'] ] : array();
    				$this->ttids[ $row['term_id'] ][ $row['taxonomy'] ] = $row['element_id'];
    				$this->term_ids[ $row['element_id'] ]               = $row['term_id'];
    			}
    		}
    	}
    إلى:
    	private function maybe_warm_term_id_cache() {
    
    		if ( ! isset( $this->ttids ) || ! isset( $this->term_ids ) ) {
    
    			$data           = $this->wpdb->get_results( "	SELECT wpml_translations.element_id, tax.term_id, tax.taxonomy
    													 " . $this->get_element_join() . "
    													 JOIN {$this->wpdb->terms} terms
    													  ON terms.term_id = tax.term_id
    													 WHERE tax.term_id != tax.term_taxonomy_id",
    			                                      ARRAY_A );
    			$this->term_ids = array();
    			$this->ttids    = array();
    			foreach ( $data as $row ) {
    				$this->ttids[ $row['term_id'] ]                     = isset( $this->ttids[ $row['term_id'] ] )
    					? absint($this->ttids[ $row['term_id'] ]) : array();
    				$this->ttids[ $row['term_id'] ][ $row['taxonomy'] ] = absint($row['element_id']);
    				$this->term_ids[ $row['element_id'] ]               = absint($row['term_id']);
    			}
    		}
    	}

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