WPML
สถานะ
แก้ไขแล้ว
รายงานสำหรับ
WPML Multilingual CMS 3.8.3
แก้ไขใน
3.9.0

ภาพรวมของปัญหา

เมื่อภาษามีรหัสสองตัวอักษรใน แท็ก และมีรหัสที่ยาวกว่าใน โลแคลเริ่มต้น ระบบจะใช้ตัวหลังเพื่อแสดงผลแท็ก hreflang

วิธีแก้ปัญหาชั่วคราว

จะมีการแก้ไขใน WPML เวอร์ชันหลักถัดไป โดยคำว่า “tag” จะถูกแทนที่ด้วย “hreflang” เพื่อหลีกเลี่ยงความสับสนและจะใช้ตรรกะที่ถูกต้อง

ในระหว่างนี้ คุณสามารถทำตามขั้นตอนต่อไปนี้เพื่อแก้ไขปัญหานี้:


  1. สำรองข้อมูลไซต์ของคุณ

  2. ค้นหาและแก้ไขไฟล์ class-wpml-seo-headlangs.php ในโฟลเดอร์ ../sitepress-multilingual-cms/classes/seo/ โดยที่ sitepress-multilingual-cms คือไดเรกทอรีที่ติดตั้ง WPML

  3. ที่ประมาณบรรทัดที่ 139 คุณจะพบโค้ดต่อไปนี้:
    private function get_hreflang_code( $lang ) {
    	$tag           = $lang['tag'];
    	$locale        = $lang['default_locale'];
    	$hreflang_code = $this->get_best_code( array( $tag, $locale ) );
    	$hreflang_code = str_replace( '_', '-', $hreflang_code );
    	$hreflang_code = strtolower( $hreflang_code );
    
    	if ( $this->is_valid_hreflang_code( $hreflang_code ) ) {
    		return trim( $hreflang_code );
    	}
    
    	return '';
    }


  4. แทนที่ด้วยโค้ดนี้:
    private function get_hreflang_code( $lang ) {
    	$ordered_keys = array( 'tag', 'default_locale' );
    
    	$hreflang_code = '';
    	foreach ( $ordered_keys as $key ) {
    		if ( array_key_exists( $key, $lang ) && trim( $lang[ $key ] ) ) {
    			$hreflang_code = $lang[ $key ];
    			break;
    		}
    	}
    
    	$hreflang_code = strtolower( str_replace( '_', '-', $hreflang_code ) );
    
    	if ( $this->is_valid_hreflang_code( $hreflang_code ) ) {
    		return trim( $hreflang_code );
    	}
    
    	return '';
    }

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