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 el foro 6 días a la semana, durante 22 horas por día.

Etiquetado: 

This topic contains 5 respuestas, has 2 mensajes.

Last updated by Alejandro hace 3 meses, 1 semana.

Assigned support staff: Alejandro.

Autor Mensajes
julio 1, 2019 a las 12:38 pm #4118941

jose-davidM

Buenas,

Cuando desactivo la opción 'Ajustar IDs para una funcionalidad multilingüe' siempre se me muestra el idioma oiriginal. He probado a 'sincronizar menus' y varias cosas pero no consigo sacar la traducción.

Este es el código que estoy probando:

$menu_locations = get_nav_menu_locations();
$menu_id = isset($menu_locations['primary']) ? $menu_locations['primary'] : false;
$menu_id = apply_filters( 'wpml_object_id', $menu_id, 'nav_menu', TRUE );
wp_nav_menu(array(
'menu' => $menu_id
));

julio 1, 2019 a las 1:19 pm #4119327

Alejandro
Supporter

Languages: Inglés (English ) Español (Español ) Italiano (Italiano )

Timezone: Europe/Rome (GMT+02:00)

Hola!
Bienvenido al Soporte WPML.
Haré mi mejor esfuerzo para ayudarte a resolver este problema.

Sí, es justo para algunas cosas como la que mencionas que "Ajustar IDs para una funcionalidad multilingüe" así que te convendría mantenerlo activo.

Es verdad que con esa funcion tendrás algunas queries extras en la comunicación con la base de datos pero no debería influir mucho en el rendimiento de tu página web.

Sino puedes tratar de usar algunos de nuestros Hooks: https://wpml.org/documentation/support/wpml-coding-api/wpml-hooks-reference/

Aunque esto ya cae en el campo de trabajo personalizado que está fuera de nuestro soporte así que te podríamos solo orientar un poco menos en ese caso.

Saludos.

julio 1, 2019 a las 1:30 pm #4119395

jose-davidM

Buenas, es vital desactivar "Ajustar IDs para una funcionalidad multilingüe" ya que el rendimiento de nuestra web se ve muy afectado cuando activamos esta carecterística.

julio 1, 2019 a las 4:57 pm #4121273

Alejandro
Supporter

Languages: Inglés (English ) Español (Español ) Italiano (Italiano )

Timezone: Europe/Rome (GMT+02:00)

Creo que lo mejor que puedes hacer en este momento es hacer un var_dump() de las diferentes variables.

Por lo que veo en tu código, nuestro filter siempre regresa el ID del elemento de navegacion original porque has agregado "TRUE" en uno de los parametros (que representa return_original_if_missing).

pero con el var_dump en

$menu_id = apply_filters( 'wpml_object_id', $menu_id, 'nav_menu', TRUE );

verás si el ID que te regresa es siempre el original o si te regresa el ID justo, así sabrás si tienes que hacer el debug en la linea de código de antes despué.

Avisame que tal te fue.

julio 2, 2019 a las 8:34 am #4124989

jose-davidM

Buenas,

Efectivamente he hecho un var_dump de:

$menu_id = apply_filters( 'wpml_object_id', $menu_id, 'nav_menu', TRUE  );

Si estoy en inglés me devuelve 32 y si estoy español me devuelve 10

El problema parece esta en:

wp_nav_menu(array(
'menu' => $menu_id
));

No parece hacer caso del ID. Puedes probarlo tu mismo.

julio 2, 2019 a las 2:53 pm #4128169

Alejandro
Supporter

Languages: Inglés (English ) Español (Español ) Italiano (Italiano )

Timezone: Europe/Rome (GMT+02:00)

Otra cosa que te quería decir. No estoy 100% seguro al momento (espero la respuesta de uno de nuestros desarrolladores) pero me parece que la "location" de un menu es única. es decir que no pueden haber varios menus como "primary" por lo que esto afectaría también los resultados.

Prueba a hacer un var_dump en esta linea de código:

$menu_id = isset($menu_locations['primary']) ? $menu_locations['primary'] : false;

y a su vez en

wp_nav_menu(array(
'menu' => $menu_id
));

Disculpa si no lo hago yo, pero por las reglas de este soporte, no podemos hacer debugging a código personalizado. En realidad el "custom coding" va más allá del proposito de nuestro soporte pero te deseo dar una mano, por eso trato de orientarte a donde podría estar el problema.

Saludos.

El debate ‘[Cerrado] wp_nav_menu me muestra siempre el idioma original’ está cerrado y no admite más respuestas.