Este hilo está resuelto. Aquí tienes una descripción del problema y la solución.
Problema: Si estás intentando traducir las páginas de autor y encuentras que el selector de idiomas no funciona correctamente, redirigiendo a la página principal en lugar de mantenerse en la página de autor traducida. Solución: Primero, asegúrate de que el autor tiene posts traducidos en el idioma secundario. Si no es así, el selector de idiomas podría no aparecer por defecto. Para ajustar cómo WPML maneja los idiomas sin traducción: 1. Ve a WPML → Idiomas. 2. En 'Language switcher options', revisa el ajuste 'How to handle languages without translation'. 3. Si está configurado en 'Link to home of language for missing translations', cámbialo a una opción que no redirija a la página principal, como ocultar el idioma si no hay traducción para el contexto actual. 4. Prueba el selector de idiomas nuevamente en la URL de la página de autor. Si necesitas que el selector de idiomas siempre redirija a la URL traducida de la página de autor, incluso si no hay posts traducidos, puedes aplicar el siguiente código en el archivo
functions.php
de tu tema hijo o en un plugin de snippets, adaptando el formato de URL de tu sitio:
Si esta solución no resuelve tu problema o si parece estar desactualizada, te recomendamos abrir un nuevo ticket de soporte. También es aconsejable revisar los problemas conocidos y confirmar que tienes instaladas las últimas versiones de los temas y plugins. Para más asistencia, visita nuestro foro de soporte.
Este es el foro de soporte técnico de WPML, el plugin multilingüe de WordPress.
Todas las personas pueden leerlo pero solo los clientes de WPML pueden ingresar comentarios. El equipo de WPML responde en los foros 6 días a la semana, 22 horas por día.
correcto, no estar funcionando correctamente es el selector de idiomas, la autora ni el resto de autores tienen nigun pos, como se arregla esto, la info de depuracio:
El comportamiento esperado si el autor no tiene posts traducidos es que el selector de idiomas no aparezca.
Prueba lo siguiente:
- Ir a WPML → Idiomas.
- En Language switcher options, revisar el ajuste “How to handle languages without translation”.
- Si está en “Link to home of language for missing translations”, cambiarlo a una opción que no fuerce home (por ejemplo, ocultar el idioma si no hay “traducción” para el contexto actual).
- Probar de nuevo el selector en /author/leire-garitano/.
Nota: esto no “crea” la página de autor en el idioma; solo evita que WPML trate el cambio como “sin traducción ⇒ home”.
Si quieres forzar que el selector SIEMPRE vaya a /eu/author/slug/ aunque no haya posts, aplica workaround por código (forzar URLs del selector en páginas de autor):
- ❌ Por favor, antes que nada: haz un backup de tu sitio ❌
- Añade este snippet en el functions.php del tema hijo (o en un plugin de snippets), adaptando el formato de URL de tu site:
add_filter( 'icl_ls_languages', function( $languages ) {
if ( is_author() ) {
$author = get_queried_object();
$author_slug = $author ? $author->user_nicename : '';
$default_lang = apply_filters( 'wpml_default_language', null );
foreach ( $languages as $lang_code => &$lang ) {
// Ajusta si tu web usa "idioma por directorios" y si el default NO lleva prefijo.
if ( $lang_code === $default_lang ) {
$lang['url'] = home_url( '/author/' . $author_slug . '/' );
} else {
$lang['url'] = home_url( '/' . $lang_code . '/author/' . $author_slug . '/' );
}
}
}
return $languages;
}, 10, 1 );
el codigo no ha funcionado, y How to handle languages without translation” no lo encuentro, tengo wpml en castellano no en ingles. de todas formas, no se si se ha entendido bien el problema, cuando estoy en la pagina enlace oculto en el menu principal solo aparece castellano, no deja seleccionar euskera y si estoy en cualr pagina traducida al euskera, por ejemplo enlace oculto y desde el menu accedo a cualquier capina de autor que son las paginas que se despliegan debajo de equipo, al pulsar no aparece la pagina en euskera.
ademas de lo anterior, dejo un pantallazo de un aviso que esta apareciendo a menudo, para arreglar un error, no se porque ocurre ese error, la gagina la he traducido como cualquier otra
¿Para investigar mejor el problema, ¿puedes proporcionarme acceso temporal a tu sitio?
**Importante:**
- **Haz un backup** de tu sitio antes de compartir los datos.
- Si no ves un formulario privado para ingresar las credenciales, **no las publiques** en el foro.
¿Si fuera necesario, podría replicar tu sitio localmente instalando un plugin (Duplicator o WP All in One Migration)? Una vez resuelto el problema, borraré la copia.
Gracias, pero cuando intento acceder al admin me aparece este mensaje:
Locked
The requested resource is currently locked. The lock must be released or proper identification given before the method can be applied.
He modificado el snippet WPML – Cambio de idioma en páginas de autor y lo he dejado desactivado por el momento:
/**
* Force WPML language switcher to show all languages on author archives
* and build the author URL in each language.
*/
add_action( 'wp', function () {
if ( is_admin() || ! is_author() ) {
return;
}
if ( ! function_exists( 'icl_set_setting' ) ) {
return;
}
// Ensure missing translations still appear in the switcher.
icl_set_setting( 'icl_lso_link_empty', 1, false );
// Clear Divi static resources cache once per author+lang (short TTL).
if ( class_exists( 'ET_Core_PageResource' ) && method_exists( 'ET_Core_PageResource', 'remove_static_resources' ) ) {
$author_id = get_queried_object_id();
$lang = ! empty( $GLOBALS['sitepress'] ) ? $GLOBALS['sitepress']->get_current_language() : 'default';
$key = 'orbela_divi_cache_' . (int) $author_id . '_' . (string) $lang;
if ( ! get_transient( $key ) ) {
ET_Core_PageResource::remove_static_resources( 'all', 'all' );
set_transient( $key, 1, 5 * MINUTE_IN_SECONDS );
}
}
} );
add_filter( 'wpml_ls_language_url', function ( $url, $data ) {
if ( is_admin() || ! is_author() ) {
return $url;
}
if ( empty( $data['code'] ) ) {
return $url;
}
$author_id = get_queried_object_id();
if ( ! $author_id ) {
return $url;
}
if ( empty( $GLOBALS['sitepress'] ) ) {
return $url;
}
$sitepress = $GLOBALS['sitepress'];
$current = $sitepress->get_current_language();
$sitepress->switch_lang( $data['code'] );
$author_url = get_author_posts_url( $author_id );
$sitepress->switch_lang( $current );
return $author_url ? $author_url : $url;
}, 10, 2 );
Por lo que pude ver, localmente funciona. Por favor, actívalo y compruébalo en tu sitio.
Puede que tengas que limpiar el caché de Divi si el estilo se rompe:
Divi > Opciones del tema > Constructor > Avanzado > Generación de Archivo CSS Estático > Claro ("clear")
En cuanto a los links a los autores en el menú:
Son enlaces personalizados, por lo que tienes que editarlos "a mano". Ve a Apariencia > Menús > cambia a Euskera y cambia el link para que apunte a la página del autor con el prefijo de idioma.
He hecho todo lo que comentas, parece que ya funciona bien, lo unico, puedes revisar la pagina en incogninito, por ejemplo enlace oculto es como que se rompe un momento y cuando mueves el cursos se arregla, te pasa lo mismo?
al final has tenido que instalar algun plugin? hay que borrar algo?
Es equivalente a hacer esto de forma manual:
Divi > Opciones del tema > Constructor > Avanzado > Generación de Archivo CSS Estático > Claro ("clear")
No entiendo por qué el estilo se rompe al cambiar de idioma en la página de autor 🤔
Sin esa parte del código se rompe y queda roto hasta que regeneras el CSS manualmente, por eso lo incluí.
Le di vueltas, pero no encuentro la manera de corregir ese "glitch". ¿Es posible para ti consultarlo con el soporte de Divi también? Tal vez ellos pueden ayudar con este tema.
Entiendo, en ese caso, la solución es crear una entrada para cada miembro del equipo y traducirla. Una vez hecho esto, el selector funciona correctamente sin agregar código personalizado.