- Estado
- Resuelto
- Notificado para
- WPML Multilingual CMS 3.8.3
- Resuelto en
- 3.9.0
Resumen del problema
Cuando un idioma tiene un código de dos letras en la etiqueta y un código más largo en la configuración regional predeterminada, este último se utiliza para generar las etiquetas hreflang.
Solución alternativa
Se proporcionará una solución en la próxima versión principal de WPML, donde la palabra «etiqueta» se reemplazará por «hreflang» para evitar confusiones y se utilizará la lógica correcta.
Mientras tanto, puede seguir estos pasos para solucionar este problema:
- Haga una copia de seguridad de su sitio.
- Busque y edite el archivo class-wpml-seo-headlangs.php en la carpeta ../sitepress-multilingual-cms/classes/seo/, donde sitepress-multilingual-cms es el directorio donde está instalado WPML.
- Alrededor de la línea 139, debería encontrar el siguiente código:
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 ''; } - Reemplácelo con este código:
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 ''; }