WPML
الحالة
محلولة
أُبلغ عنها لـ
WPML Multilingual CMS 3.3.6
تم حلها في
3.3.6

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

قد تكون علامات hreflang الوصفية مفقودة من ترويسة الصفحة. يحدث هذا منذ الإصدار WPML 3.3.6، بالاقتران مع قوالب أو إضافات تقوم بتحميل WPML في وقت مبكر جداً.

يجب أن تتضمن إضافة WPML علامات <link hreflang=”lang”> في قسم الترويسة بموقعك. هذا مفقود في بعض المواقع التي تستخدم WPML 3.3.6 وبالاقتران مع بعض الإضافات أو القوالب. تحدث المشكلة لأن WPML تحاول إخراج هذه العلامات مبكراً في الترويسة، لكن الإضافات الأخرى تتسبب في حالة تسابق، مما يؤدي إلى تشغيل WPML في وقت مبكر جداً. قد تتلقى رسالة بريد إلكتروني من أداة مشرفي المواقع من Google، تقول «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 طباعة وسوم hreflang الوصفية في أقرب وقت ممكن، ولكن هذا يسبب مشاكل مع بعض القوالب والإضافات.

إذا كنت لا تزال ترغب في طباعة وسوم 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');

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