Saltar navegación

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

Problem:
The client reported an issue where the hreflang tags were incorrectly including '/en/' in the URL for the Spanish version, leading to 404 errors.
Solution:
We recommended deactivating all plugins except those necessary for WPML and the theme, and then reactivating them one by one to identify the cause. If the issue persisted, we provided a custom code solution involving updating the database and modifying the functions.php file in the child theme directory. The steps included:
1. Creating a full site backup.
2. Running the following SQL query:

INSERT INTO `wp_postmeta` (`post_id`, `meta_key`, `meta_value`) VALUES ('49068', '_yoast_wpseo_primary_property_city', '654');

3. Adding the provided PHP code to functions.php, which adjusts the URL structure based on the primary city term associated with each property.

If this solution does not resolve the issue or seems irrelevant due to updates or different configurations, we recommend checking the related known issues, verifying the version of the permanent fix, and confirming that you have installed the latest versions of themes and plugins. If further assistance is needed, please open a new support ticket.

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.

Etiquetado: 

Este tema contiene 26 respuestas, tiene 2 voces.

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

Asistido por: Carlos Rojas.

Autor Entradas
mayo 8, 2024 en 9:14 am #15605106

francisco-javierR-6

la etiqueta hreflang tiene error y no incluye el /en/ para la web en inglés, por lo tanto, resulta como un error 404.

view-source:enlace oculto

Lucas Vidal tiene acceso a la web y puede ver las url ocultas.

Os dejo ejemplo del hreflang con el error
<meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
<link rel="alternate" hreflang="en" href="enlace oculto" />
<link rel="alternate" hreflang="es" href="enlace oculto" />
<link rel="alternate" hreflang="x-default" href="enlace oculto" />

Ocurre lo mismo cuando vas a la versión en inglés, el hreflang en español está mal incluyendo /en/ en este caso.

Queo pendiente a una solución.
Gracias.
Javier.

mayo 8, 2024 en 10:38 am #15605525

Carlos Rojas
Supporter

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

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

Hola Javier,
Muchas gracias por volver a contactarnos

1.- He intentado visitar enlace oculto pero me redirige a la página de inicio en el idioma original, lo que indica que la página no existe o que el idioma secundario está oculto. Le pido que compruebe ambos escenarios y compruebe si el hreflang aparece correctamente.

2.- Por favor incremente el límite de memoria de WordPress. El mínimo requerido es de 128Mb: https://wpml.org/home/minimum-requirements/
Para ello puede agregar el siguiente código al archivo wp-config.php que se encuentra en la raíz del sitio:

 /* Memory Limit */
define('WP_MEMORY_LIMIT', '128M');

- Añádelo encima de la línea /* That's all, stop editing! Happy blogging. */

Puede comprobar el límite de memoria de WordPress en WPML -> Soporte

Saludos,
Carlos

mayo 8, 2024 en 10:50 am #15605545

francisco-javierR-6

1. Ya le pasé la información a tu compañero de acceso a wp-admin en el dominio, para que podáis ver el idioma oculto. Por favor, dme como puedo compartir contigo también esta información ya que por el momento no quiero que se muestre este idioma.

Quedo atento.

2. Ya estaría.

Gracias por tu respuesta.
Javier.

mayo 8, 2024 en 11:53 am #15605784

Carlos Rojas
Supporter

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

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

Hola Javier,

He establecido su próxiom mensaje como privado para que pueda compartir las credenciales de acceso al sitio de forma segura. Por favor confirme que tiene una copia de seguridad del sitio completo que puede restaurar en caso de ser necesario.

mayo 8, 2024 en 1:05 pm #15606246

Carlos Rojas
Supporter

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

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

Muchas gracias por compartir las credenciales solicitadas.

He podido reproducir el problema y sospecho que se trate de un conflicto con una funcionalidad de terceros. Le pido que realice los siguientes pasos para aislar la causa del problema:
- Cree una copia de seguridad del sitio completo o cree un sitio staging con una copia del sitio en producción
- Borre la memoria cache
- Desactive todos los plugins, incluidos los de WPML
- Active un tema por defecto de WordPress, por ejemplo: Twenty Twenty
- Active los plugins de WPML
- Active el tema padre de Houzez
- Cambie el slug de las propiedades de %city% a 'propiedad'
- Vaya a WPML -> Configuración -> Traducción de tipos de contenido -> Traduzca el slug de 'Propiedades' -> Guarde los cambios
- Vuelva a guardar los enlaces permanentes
- Si el problema desapareció, comience activando el tema hijo y luego el resto de los plugins, uno por uno, hasta que el problema vuelva a aparecer y encuentre al culpable

Puede decirme el resultado de los pasos anteriores?

mayo 8, 2024 en 2:17 pm #15606690

francisco-javierR-6

Hola, no podemos cambiar el slug a 'propiedad' ya que nuestra url de cada propiedad coge automaticamente la taxonomía "ciudad" asignada, y de manera automática añade esta parte en la URL para una mejor estructura web.

Esto debería poder solucionarse.

Por favor, mis conocimientos técnicos son bastante limitados por lo que os pediría si podéis vosotros mismos revisar el conflicto y darle una solución.

Gracias.
Javier.

mayo 9, 2024 en 8:25 am #15609377

Carlos Rojas
Supporter

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

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

Hola Javier,

Puede crear un sitio staging con una copia del sitio en producción donde podamos realizar pruebas sin afectar al sitio publicado?

He establecido su próximo mensaje como privado para que pueda compartir las credenciales de acceso al sitio staging en caso de poder crearlo.

mayo 9, 2024 en 11:38 am #15610220

Carlos Rojas
Supporter

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

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

Hola Javier,
Muchas gracias por crear el sitio staging y compartir las credenciales

He desactivado todos los plugins, excepto los de WPML y los necesarios del tema. He activado el tema padre. He cambiado el slug de las propiedades y el problema ha desaparecido.

Le pido que comience activando el tema hijo y el resto de los plugins, uno por uno, hasta que el problema vuelva a aparecer.

Si el problema ha desaparecido, vuelva a cambiar y traducir el slug de las propiedades y vuelva a comprobar.

mayo 9, 2024 en 12:00 pm #15610305

francisco-javierR-6

Hola no entiendo muy bien la solución aplicada.

Como decía NO QUIERO NI PUEDO cambiar el slug de %city% a propiedad ya que esta función hace que la ciudad aparezca en la url y por lo tanto que la estructura de la web sea mucho mejor.

Os pedía por favor que arregléis la función, para que siga funcionando esta opción de %city% pero que luego WPML también coja correctamente la URL.

Al final la función de %city% funciona correctamente, y es un error que está generando en WPML al crear la hreflang links.

En php functions donde entiendo está la función veo este código, por si sirve de ayuda:

function residen_property_post_link($post_link, $post) {
if (is_object($post) && $post->post_type == 'property') {
if (class_exists('WPSEO_Primary_Term')) {
// Show Yoast Primary Category, or First category.
$wpseo_primary_term = new WPSEO_Primary_Term('property_city', $post->ID);
$wpseo_primary_term = $wpseo_primary_term->get_primary_term();
$term = get_term($wpseo_primary_term);

if (!is_wp_error($term)) {
$post_link = home_url(user_trailingslashit("{$term->slug}/{$post->post_name}"));
}
} else {
$city_terms = wp_get_object_terms($post->ID, 'property_city');

if ($city_terms) {
$post_link = home_url(user_trailingslashit("{$city_terms[0]->slug}/{$post->post_name}"));
}
}
}
return $post_link;
}
add_filter('post_type_link', 'residen_property_post_link', 1, 2);

function residen_custom_parse_request($wp) {
if (empty($wp->query_vars['page']) && !empty($wp->request)) {
$path = explode('/', $wp->request);

if (count($path) == 2) {
$city_slug = $path[0];
$post_name = $path[1];

// Check if the city_slug is a valid property_city term
if (term_exists($city_slug, 'property_city')) {
// Set the query_vars for a property
$wp->query_vars = array(
'post_type' => 'property',
'name' => $post_name,
'property_city' => $city_slug,
);
}
}
}
}
add_action('parse_request', 'residen_custom_parse_request', 10, 1);

function residen_property_pre_get_posts($query) {
if ($query->is_main_query() && !is_admin() && $query->get('post_type') === 'property') {
$city = get_query_var('property_city', false);

if ($city) {
$tax_query = array(
array(
'taxonomy' => 'property_city',
'field' => 'slug',
'terms' => $city,
),
);
$query->set('tax_query', $tax_query);
}
}
}
add_action('pre_get_posts', 'residen_property_pre_get_posts');

function custom_property_query_vars($query_vars) {
$query_vars[] = 'property_city';
return $query_vars;
}
add_filter('query_vars', 'custom_property_query_vars');

Espero que podáis ayudarme, estaré agradecido.
Saludos,

mayo 9, 2024 en 12:17 pm #15610332

Carlos Rojas
Supporter

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

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

Hola,

Los pasos que seguí demuestran que con el slug 'propiedad', el tema padre y solamente los plugins de WPML y los necesarios de Houzez el problema desaparece. Los pasos que le describí para que realizara nos permitirán determinar con certeza dónde está la causa del problema. Es por ello que le pido amablemente que realice los pasos y me diga el resultado.

mayo 9, 2024 en 12:29 pm #15610498

francisco-javierR-6

Hola de nuevo, Carlos

Gracias por tu rápida respuesta.

Si hago los cambios que propones en produccion, seguramente se "rompan" todas las urls de las propiedades, es decir, por ejemplo para enlace oculto cuando cambia a "propiedad" el slug, e independientemente de si luego vuelvo a poner %city%, se habrá roto lo anterior y tendré que ir una a una arreglandolo, lo cual me es imposible.

Puedes ver esto anterior que digo en staging... espero que podáis encontrar la solución, yo como decía no tengo conocimientos técnicos y por lo tanto, es más probable que si lo hacéis directamente todo, quede perfectamnete solucionado antes.

Mil gracias de antemano.
Saludos,

Javier.

mayo 9, 2024 en 12:39 pm #15610667

Carlos Rojas
Supporter

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

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

Hola Javier,

Los pasos que le pido son para que los aplique en el sitio staging y no necesitan de conocimientos técnicos. Solo necesita ir activando el tema y los plugins en el órden indicado y comprobar si el problema persiste o desaparece.

mayo 9, 2024 en 12:45 pm #15610671

francisco-javierR-6

Hola Carlos,

Gracias por la aclaración. Sí, al activar child theme, el problema persiste. Por eso, le enviaba el código del php functions, ahí está todo lo relativo a la función %city% y la que seguramente esté haciendo que no vaya... solo es lo que creo yo 🙂

ejemplo para que puedas ver que aún no reconoce bien el idioma en los hreflang links:
view-source:enlace oculto

Quedo a tu disposición.
Saludos,

Javier.

mayo 9, 2024 en 12:50 pm #15610674

Carlos Rojas
Supporter

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

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

Hola Javier,

Al parecer no ha seguido los pasos en el orden que he descrito en mi mensaje: https://wpml.org/es/forums/topic/hreflang-no-correcta-no-incluye-path-idioma-ej-en-y-al-contrario/#post-15610220 pues de acuerdo a su respuesta no sé si el problema aparece al activar el tema hijo o al cambiar el slug de vuelta a %city% que es el último paso.

Por favor vuelva a revisar los pasos en el órden en que describí en mi mensaje y hágame saber si el problema aparece con el tema hijo y el slug en 'propiedad'.

mayo 9, 2024 en 12:57 pm #15610679

francisco-javierR-6

En respuesta a su cuestión de no he seguido los pasos.

Es imposible que le diga si el problema reaparece al cambiar el slug a %city% puesto que al cambiar a esto, sin haber activado Child Theme, ninguna de las urls de las propiedades funciona y por lo tanto, no puedo revisar si ciertamente las hreflangs están bien o no.

Ya que las urls quedan entonces así /%city%/nombre-de-la-propiedad/ y no es accesible, da un error 404 que por lo tanto, no me permite inspeccionar el código de la página.

Lo que sí, después de activar el tema hijo, y por lo tanto, (activar el código %city%) vuelve el problema con las url mal en las hreflangs.

Espero que esto ayude.
Saludos,

Javier.