- สถานะ
- แก้ไขแล้ว
- รายงานสำหรับ
- WPML Multilingual CMS 3.8.3
- แก้ไขใน
- 3.9.0
ภาพรวมของปัญหา
เมื่อภาษามีรหัสสองตัวอักษรใน แท็ก และมีรหัสที่ยาวกว่าใน โลแคลเริ่มต้น ระบบจะใช้ตัวหลังเพื่อแสดงผลแท็ก hreflang
วิธีแก้ปัญหาชั่วคราว
จะมีการแก้ไขใน WPML เวอร์ชันหลักถัดไป โดยคำว่า “tag” จะถูกแทนที่ด้วย “hreflang” เพื่อหลีกเลี่ยงความสับสนและจะใช้ตรรกะที่ถูกต้อง
ในระหว่างนี้ คุณสามารถทำตามขั้นตอนต่อไปนี้เพื่อแก้ไขปัญหานี้:
- สำรองข้อมูลไซต์ของคุณ
- ค้นหาและแก้ไขไฟล์ class-wpml-seo-headlangs.php ในโฟลเดอร์ ../sitepress-multilingual-cms/classes/seo/ โดยที่ sitepress-multilingual-cms คือไดเรกทอรีที่ติดตั้ง WPML
- ที่ประมาณบรรทัดที่ 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 ''; } - แทนที่ด้วยโค้ดนี้:
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 ''; }