WPML
สถานะ
แก้ไขแล้ว
รายงานสำหรับ
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:


  1. เปิดไฟล์ sitepress-multilingual-cms/sitepress.class.php

  2. เลื่อนลงไปที่ด้านล่างสุดของไฟล์นี้ ซึ่งคุณจะเห็นสิ่งนี้: ภาพหน้าจอ 2016-02-24 เวลา 10.47.11

  3. แทนที่บรรทัดนี้: add_action( 'wp_head', array( $this, 'head_langs' ), 1 );

  4. ด้วย: add_action( 'wp_head', array( $this, 'head_langs' ) );

  5. เวอร์ชันสุดท้ายของโค้ดนี้ต้องมีลักษณะดังนี้: ภาพหน้าจอ 2016-02-24 เวลา 11.00.04

  6. บันทึกไฟล์

ใน 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');

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