- Estado
- Resuelto
- Resuelto en
- 1.2.0
- Plugin/tema relacionado
- Yoast SEO
Resumen del problema
Tras los recientes cambios importantes en Yoast 14.x, algunos usuarios de WPML están viendo que el contenido de Yoast siempre se genera en el idioma predeterminado.
Por ejemplo, en una página en un idioma secundario, esto podría afectar a las etiquetas “meta” como “og:title” u “og:description”, o a las URL en sus migas de pan.
Tenemos una solución alternativa, pero debido a la naturaleza del problema, es posible que no funcione para todos. Estamos trabajando para solucionar este problema lo antes posible.
Si tiene problemas para traducir el contenido de Yoast, pruebe la solución alternativa a continuación y espere a la próxima versión de Yoast Multilingual antes de crear una consulta de soporte.
Solución alternativa
Añada este código al archivo functions.php de su tema:
if ( ! is_admin() ) {
add_filter( 'wpseo_title', 'wpml_wpseo_title', 10, 2 );
add_filter( 'wpseo_opengraph_title', 'wpml_wpseo_title', 10, 2 );
}
function wpml_wpseo_title( $title, $presentation ) {
switch ( $presentation->model->object_type ) {
case 'post-type-archive':
$key = 'title-ptarchive-' . $presentation->model->object_sub_type;
break;
case 'system-page':
$key = 'title-' . $presentation->model->object_sub_type . '-wpseo';
break;
default:
$key = false;
}
if ( $key ) {
$option = get_option( 'wpseo_titles' );
if ( isset( $option[ $key ] ) ) {
$title = wpseo_replace_vars( $option[ $key ], $presentation );
}
}
return $title;
}
if ( ! is_admin() ) {
add_filter( 'wpseo_metadesc', 'wpml_wpseo_desc', 10, 2 );
add_filter( 'wpseo_opengraph_desc', 'wpml_wpseo_desc', 10, 2 );
}
function wpml_wpseo_desc( $title, $presentation ) {
switch ( $presentation->model->object_type ) {
case 'post-type-archive':
$key = 'metadesc-ptarchive-' . $presentation->model->object_sub_type;
break;
case 'system-page':
$key = 'metadesc-' . $presentation->model->object_sub_type . '-wpseo';
break;
default:
$key = false;
}
if ( $key ) {
$option = get_option( 'wpseo_titles' );
if ( isset( $option[ $key ] ) ) {
$title = wpseo_replace_vars( $option[ $key ], $presentation );
}
}
return $title;
}
add_filter( 'wpseo_save_indexable', function( $indexable ) {
$args = [
'element_id' => $indexable->object_id,
'element_type' => $indexable->object_type,
];
$language_code = apply_filters( 'wpml_element_language_code', false, $args );
$indexable->permalink = apply_filters( 'wpml_permalink', $indexable->permalink, $language_code, true );
return $indexable;
} );
Después de añadir el código, instale el plugin Yoast Test Helper.
Vaya a Herramientas > Yoast Test y haga clic en «Reset Indexables tables & migrations».
Por último, vaya a su Escritorio y haga clic en el aviso del panel de administración que le pide que indexe el sitio.
Si tiene alguna pregunta o desea informar de un problema relacionado, mencione este problema conocido para que nuestro equipo pueda ofrecerle un soporte eficiente.