- סטטוס
- נפתר
- דווח עבור
- 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 ''; }