- สถานะ
- แก้ไขแล้ว
- รายงานสำหรับ
- WPML Multilingual CMS 3.3.6
- แก้ไขใน
- 3.3.6
ภาพรวมของปัญหา
แท็ก meta hreflang อาจขาดหายไปจากส่วนหัวของหน้า ปัญหานี้เกิดขึ้นตั้งแต่ WPML 3.3.6 เมื่อใช้ร่วมกับธีมหรือปลั๊กอินที่โหลด WPML เร็วเกินไป
WPML ควรเพิ่มแท็ก <link hreflang=”lang”> ในส่วนหัวของไซต์ของคุณ แท็กนี้ขาดหายไปในบางไซต์ที่ใช้ WPML 3.3.6 และเมื่อใช้ร่วมกับปลั๊กอินหรือธีมบางตัว ปัญหาเกิดขึ้นเนื่องจาก WPML พยายามแสดงผลแท็กเหล่านี้ตั้งแต่ช่วงต้นของส่วนหัว แต่ปลั๊กอินอื่นทำให้เกิด race condition ซึ่งเรียกใช้งาน WPML เร็วเกินไป คุณอาจได้รับอีเมลจาก Google Webmaster tool ที่ระบุว่า “Incorrect hreflang implementation”
คำอธิบายที่เสร็จสมบูรณ์ของฟังก์ชันการทำงานนี้ปรากฏอยู่ใน หลักเกณฑ์ด้านเนื้อหาของ Google สำหรับ URL ภาษาและภูมิภาค
วิธีแก้ปัญหาชั่วคราว
วิธีแก้ไขปัญหานี้ใน WPML 3.3.6:
- เปิดไฟล์
sitepress-multilingual-cms/sitepress.class.php - เลื่อนลงไปที่ด้านล่างสุดของไฟล์นี้ ซึ่งคุณจะเห็นสิ่งนี้:

- แทนที่บรรทัดนี้:
add_action( 'wp_head', array( $this, 'head_langs' ), 1 ); - ด้วย:
add_action( 'wp_head', array( $this, 'head_langs' ) ); - เวอร์ชันสุดท้ายของโค้ดนี้ต้องมีลักษณะดังนี้:

- บันทึกไฟล์
ใน WPML เวอร์ชันถัดไป จะมีการนำการแก้ไขเดียวกันนี้ไปใช้
โค้ดในขั้นตอนที่ 3 มีไว้เพื่อให้แสดงผลแท็ก meta hreflang ให้เร็วที่สุดเท่าที่จะทำได้ แต่นี่ทำให้เกิดปัญหากับธีมและปลั๊กอินบางตัว
หากคุณยังคงต้องการให้แสดงผลแท็ก meta hreflang ให้เร็วที่สุดเท่าที่จะทำได้ คุณสามารถใช้วิธีแก้ปัญหาที่ซับซ้อนยิ่งขึ้นได้ เพิ่มโค้ดนี้ลงในไฟล์ functions.php ของธีมของคุณ:
function my_handle_head_hreflang() {
global $sitepress;
$settings = $sitepress->get_settings();
if ( $settings[ 'seo' ][ 'head_langs' ] ) {
remove_action( 'wp_head', array( $sitepress, 'head_langs' ) );
add_action( 'wp_head', array( $this, 'head_langs' ), 1 );
}
}
add_action('wpml_loaded', 'my_handle_head_hreflang');