Saltar navegación

Este hilo está resuelto. Aquí tienes una descripción del problema y la solución.

Problem:
El cliente está intentando traducir el slug de una taxonomía en su sitio web, pero al hacerlo, las páginas bajo esta sección se rompen. El cliente ha personalizado el archivo functions.php para que las taxonomías hijas aparezcan bajo la categoría padre en la URL.
Solution:
Primero, hemos revisado que la estructura de URLs deseada no requiere código personalizado si se configura correctamente desde el inicio. Se sugirió al cliente revisar un sitio de prueba donde se demostró que la estructura padre/hijo funciona sin personalizaciones adicionales. Se recomendó al cliente cambiar la estructura de enlaces permanentes a 'Post name' para ver si resuelve el problema. Además, se identificó que el problema podría estar en una configuración del tema o en el código personalizado utilizado para generar la taxonomía, lo cual está fuera del alcance del soporte de WPML. Se aconsejó contactar a los desarrolladores del tema o del código personalizado para ajustar este utilizando los hooks de WPML como referencia. Si esta solución no es relevante debido a que está desactualizada o no se aplica a su caso, le recomendamos abrir un nuevo ticket de soporte. También es altamente recomendable revisar los problemas conocidos y confirmar que tiene instaladas las últimas versiones de temas y plugins.

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.

Hoy no hay asistentes de soporte disponibles en el foro Spanish. Siéntase libre de enviar sus tiques y les daremos trámite tan pronto como estemos disponibles en línea. Gracias por su comprensión.

Etiquetado: ,

Este tema contiene 19 respuestas, tiene 2 voces.

Última actualización por Carlos Rojas hace 2 meses, 2 semanas.

Asistido por: Carlos Rojas.

Autor Entradas
junio 26, 2024 en 11:42 am #15833262

francisco-javierR-6

Antecedentes del problema:
Estoy intentando traducir el slug de una taxonomía en mi sitio web enlace oculto. La sección de universidades/escuelas se encuentra bajo enlace oculto. Al traducir el slug /universidad/ a /university/ desde traducciones en cadena, las páginas bajo esta sección se rompen. He realizado una personalización en el archivo functions.php para que los child (taxonomías hijas) aparezcan bajo la categoría padre en la URL. Aquí está el código completo que hace referencia a esto:

function custom_taxonomy_term_link( $url, $term, $taxonomy ) {
if ( 'property_area' !== $taxonomy ) {
return $url;
}

$custom_slug = get_option('houzez_settings')['property_area_rewrite_base'];
if (empty($custom_slug)) {
$custom_slug = 'area'; // default slug
}

$parents = get_ancestors( $term->term_id, $taxonomy, 'taxonomy' );
foreach ( $parents as $parent ) {
$parent_term = get_term( $parent, $taxonomy );
$url = str_replace( '/' . $term->slug . '/', '/' . $parent_term->slug . '/' . $term->slug . '/', $url );
}

return $url;
}
add_filter( 'term_link', 'custom_taxonomy_term_link', 10, 3 );

function custom_taxonomy_rewrite_rule() {
$custom_slug = get_option('houzez_settings')['property_area_rewrite_base'];
if (empty($custom_slug)) {
$custom_slug = 'area'; // default slug
}

// Adding a rule for the pagination
add_rewrite_rule(
'^' . $custom_slug . '/([^/]+)/([^/]+)/page/?([0-9]{1,})/?$', // handles the pagination
'index.php?property_area=$matches[2]&paged=$matches[3]',
'top'
);

// Rule for the main term archive
add_rewrite_rule(
'^' . $custom_slug . '/([^/]+)/([^/]+)/?$', // handles the normal archive
'index.php?property_area=$matches[2]',
'top'
);
}
add_action( 'init', 'custom_taxonomy_rewrite_rule' );

Síntomas:
Al traducir el slug /universidad/ a /university/, las páginas bajo esta sección se rompen. Esto solo ocurre para las páginas child de las taxonomías.

Preguntas:
¿Cómo puedo solucionar el problema de traducción del slug de la taxonomía para que las páginas child no se rompan?

Adjunto aquí de nuevo todo lo que había escrito ya que no estoy muy seguro si el sitema ha reconocido el error...
Buenas tardes, Carlos

En primer lugar comentar que escribimos esta consulta ya que la última consulta técnica fue solventada de manera excepcional por el equipo y nosotros no tenemos capacidad interna para hacerlo. Lo hemos intentado, pero no lo hemos conseguido y por ello, recurrimos a vuestro equipo técnico.

Si el equipo consiguiese darnos una solución a este tema, todo lo relativo a cuestiones/problemas técnicos de la traducción que hemos encontrado desde el principio quedaría solucionado, y estaremos eternamente agradecidos.

El problema es el siguiente:
Dentro de nuestra web enlace oculto tenemos una sección, creada con "taxonomía/categoría" que hace referencia a universidades/escuelas. Esta sección se puede encontrar bajo: enlace oculto

El problema que encontramos es al traducir ese slug /universidad/, a inglés en este primer caso, y es que al traducir (desde traducciones en cadena) a /university/, se rompen las páginas bajo esta sección.

Ejemplo de página bajo la sección /universidad/ - /university/
enlace oculto
enlace oculto

Como podréis comprobar, funciona perfectamente, mientras el slug no cambié, como decía en cuanto se realice la traducción de /universidad/ a /university/ se rompería.
(funciona también perfectamente el hreflang al revisar el código fuente de la página)

Tenemos este staging donde tras vuestra contestación y aceptación, podemos daros acceso si fuese de utilidad para que hagáis las pruebas necesarias
enlace oculto

Aquí ya he traducido el slug, y referente al ejemplo anteriormente mostrado, podréis ver que ya no funciona en INGLÉS.
enlace oculto
enlace oculto

IMPORTANTE: solo se rompe para las páginas child de las taxonomías.

Para que los child (taxonomías hijas) vayan bajo la categoría padre, se hizo una personalización en el functions.php que incluyo abajo.

Esta personalización permite que /campus-humanidades/ que es hijo de /universitat-de-barcelona/ pueda aparecer bajo esta en la URL.

Este es el código, creo, completo que hace referencia a lo anterior.
function custom_taxonomy_term_link( $url, $term, $taxonomy ) {
if ( 'property_area' !== $taxonomy ) {
return $url;
}

$custom_slug = get_option('houzez_settings')['property_area_rewrite_base'];
if (empty($custom_slug)) {
$custom_slug = 'area'; // default slug
}

$parents = get_ancestors( $term->term_id, $taxonomy, 'taxonomy' );
foreach ( $parents as $parent ) {
$parent_term = get_term( $parent, $taxonomy );
$url = str_replace( '/' . $term->slug . '/', '/' . $parent_term->slug . '/' . $term->slug . '/', $url );
}

return $url;
}
add_filter( 'term_link', 'custom_taxonomy_term_link', 10, 3 );

function custom_taxonomy_rewrite_rule() {
$custom_slug = get_option('houzez_settings')['property_area_rewrite_base'];
if (empty($custom_slug)) {
$custom_slug = 'area'; // default slug
}

// Adding a rule for the pagination
add_rewrite_rule(
'^' . $custom_slug . '/([^/]+)/([^/]+)/page/?([0-9]{1,})/?$', // handles the pagination
'index.php?property_area=$matches[2]&paged=$matches[3]',
'top'
);

// Rule for the main term archive
add_rewrite_rule(
'^' . $custom_slug . '/([^/]+)/([^/]+)/?$', // handles the normal archive
'index.php?property_area=$matches[2]',
'top'
);
}
add_action( 'init', 'custom_taxonomy_rewrite_rule' );

----

Espero que más o menos haya quedado claro nuestro problema. Esperamos que podáis ayudarnos y como decía, estaremos muy muy muy agradecidos.

Mil gracias.
Saludos,

junio 26, 2024 en 12:51 pm #15834170

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+02:00)

Hola,
Muchas gracias por volver a contactarnos

Tenga en cuenta que las soluciones con código personalizado (como ésta) caen fuera del alcance de nuestro servicio de soporte, por lo que es posible que llegue un punto en el que no pueda darle una solución.

Dicho lo anterior, comencemos a entender el problema. La primera pregunta que me surge es: Por qué no ha utilizado una taxonomía jerárquica donde las taxonomías hijas se muestran con esta estructura en la URL: término-padre/término-hijo (tal y como usted desea) y en cambio a optado por crear funciones personalizadas para alterar la URL?

Nota importante: el slug de las taxonomías no siempre se puede traducir, hay una limitación en este sentido y en este enlace puede encontrar la explicación: https://wpml.org/documentation/support/translating-slugs-for-custom-post-type-archives/

Quedo a la espera de su mensaje.
Saludos,
Carlos

junio 26, 2024 en 1:28 pm #15834338

francisco-javierR-6

Buenas tardes, Carlos

Gracias por tu rápida respuesta. Por supuesto y si no podéis dar solución, no hay ningún problema y lo entiendo. Como decía, he intentado todo antes de contactaros.

En prinicipio el slug sí que se puede traducir y lo hacemos desde traducción en cadena:
enlace oculto

En respuesta a tu consulta, sí que lo hacemos de manera jerárquica, de hecho es el motivo por el que tuvimos que personalizar la plantilla de WP, por defecto, aunque la categoría tuviera seleccionada otra como padre, no aparecía bajo la url, jerarquicamente.

Tras las presonalización es tal y como ocurre, es decir:
término-padre/término-hijo

Ejemplo:

Padre -> /universitat-de-barcelona/
enlace oculto

Hijo -> /campus-humanidades/
enlace oculto

Espero que se entienda y por favor, no dudes en consultar cualquier cuestión que necesites que aclare.

Muchas gracias de nuevo.

junio 26, 2024 en 7:35 pm #15836936

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+02:00)

Muchas gracias por su respuesta.

He analizado las URLs de su sitio y todavía hay algo que no acabo de entender. Sospecho que la causa del problema puede ser que ha removido la base de la categoría, sin embargo eso no justificaría el código personalizado.

A modo de pruebas he creado un sitio Sandbox con una nueva instalación de WordPress + WPML al que puede acceder a través de este enlace: enlace oculto En este sitio he creado dos categorías padre/hija para las entradas y una entrada asignada a cada categoría. He traducido este contenido de prueba y usted puede observar que no es necesario ningún código personalizar para que se muestre correctamente el contenido y las URLs tienen la estructura dominio.com/category/padre y dominio.com/category/padre/hija en ambos idiomas.

Le pido que revise el sitio sandbox y me diga -además de quitar la base de la categoría- que otra cosa necesitaría para que se muestren las URLs como desea.

Saludos!

junio 27, 2024 en 10:18 am #15842896

francisco-javierR-6

Hola Carlos,

Gracias por tu trabajo. He revisado la web que compartes y efectivamente, se muestra padre e hijo sin problema. Sin embargo, no sé si pueda deberse a la plantilla de WP elegida para nuestro proyecto, pero no es así como funcionaba esta categoría, y fue desde la propia plantilla, al inicio de la compra, quién nos desarrolló esta personalización tras nuestra petición.

Podrás comprobarlo comentando del php functions el código que enviaba anteriormente,

Yo lo he comentado en staging que os decía.

Aquí puedes ver:
enlace oculto

Tiene categoría padre asignada:
enlace oculto

¿Supongo que será un tipo de categoría especial? No lo sé, mis conocimientos técnicos no dan para ello.

Dime si tienes más dudas por favor.

Mil gracias.

junio 27, 2024 en 12:43 pm #15843929

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+02:00)

Muchas gracias por su respuesta.

1.- Le pido que describa los pasos a seguir para editar la taxonomía o comparta la URL de la captura de pantalla donde aparece el slug de la taxonomía.

2.- Me gustaría solicitar acceso temporal al sitio staging (wp-admin y FTP) con el objetivo de ver el problema más de cerca. Su próxima respuesta será privada y en ella encontrará los campos correspondientes a las credenciales solicitadas.

Aunque no realizaré ningún cambio en el sitio siempre es recomendable crear una copia de seguridad del sitio completo antes de compartir las credenciales de acceso.

Saludos!

junio 28, 2024 en 8:52 am #15850589

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+02:00)

Hola Javier,
Muchas gracias por compartir las credenciales solicitadas.

Sin embargo no encuentro cómo añadir/editar los términos de la taxonomía. Puede decirme a qué tipo de contenido está asignada esta taxonomía y cómo se creó?

junio 28, 2024 en 8:54 am #15850614

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+02:00)

También he observado que la estructura de los enlaces permanentes en enlace oculto es /%category%/%postname%/

Puede cambiar la estructura a Post name y comprobar el resultado?

junio 28, 2024 en 8:55 am #15850615

francisco-javierR-6

Claro, los encontrarás aquí:
enlace oculto

Por favor, dime cualquier duda, feliz de ayudar.

junio 28, 2024 en 9:10 am #15850655

francisco-javierR-6

Hola Carlos, puedes realizar ese cambio que comentas en la estructura de los enlaces permanentes, solo hay que tener en cuenta que no debe romperse la URL de las propiedades:

enlace oculto

/gerona/ -> es la ciudad, y debe mantenerse ahí en el path, no sé si podrá tener algún impacto lo anterior, pero igual, debo compartirlo contigo, porque son nuestras páginas principales.

Gracias!!

junio 28, 2024 en 10:30 am #15851123

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+02:00)

Javier, muchas gracias por los mensajes.

Voy a revisar el sitio a ver si encuentro una solución. Le mantengo al tanto 🙂

julio 1, 2024 en 8:50 am #15866910

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+02:00)

Hola Javier,

He revisado el sitio, ajustado algunas configuraciones y he podido obtener esta estructura en la URL: enlace oculto

En este caso solamente debe añadir la categoría de provincia (por ejemplo: Gerona o Barcelona) como categoría padre de enlace oculto

julio 2, 2024 en 7:04 am #15872962

francisco-javierR-6

Hola Carlos

No sé si hay algún malentendido, pero lo que me envías como ejemplo está mal, y precisamente es el error que se arregló personalizando el functions php, como indicaba en el resto del hilo de mensajes.

Como verás, aquí no está incluida la categoría padre:
enlace oculto

La correcta sería:
enlace oculto

Para la cual, la traducción debería ser:
enlace oculto

Lo he añadido en mayúsculas la parte que falta (categoría padre).

Y la ciudad a la cual haces referencia (Girona o Barcelona) no tienen nada que ver en este caso, ya que eso es solo para reconocer a qué ciudad pertenece la universidad/escuela.

Lo que debe ser PADRE es la misma Taxonomía.
En ese caso.

enlace oculto

Quedo pendiente y muchas gracias.
Saludos,
Javier

julio 2, 2024 en 8:32 am #15873539

Carlos Rojas
Supporter

Idiomas: Inglés (English ) Español (Español )

Zona horaria: Europe/Madrid (GMT+02:00)

Hola Javier,
Tiene toda la razón. Estaba indicando el término padre incorrecto.

Sin embargo sigo sospechando que la causa del problema está en una configuración de algún plugin o en el código para generar la taxonomía property_area porque en el sitio que he creado de prueba funciona de forma nativa: enlace oculto

julio 2, 2024 en 8:56 pm #15878185

francisco-javierR-6

Hola Carlos, sí ya entiendo que cuando no se utiliza el tema que he elegido para la web, funciona tal y como esperamos.

Sin embargo, y para evitar esta cuestión, se editó el functions.php tal y como ya he comentado, y debe haber algo dentro de ese código, que falla cuando hacemos la traducción, y en otro idioma ya no tiene capacidad de mantener la estructura /padre/hijo/

No sé si hay alguna opción de que el equipo técnico pudiese echar un vistazo. De todas formas, estoy muy agradecido por el trabajo.

Saludos,
Javier.

Este ticket ya está cerrado. Si eres cliente de WPML y necesitas ayuda relacionada, abre un nuevo ticket de soporte.