WPML
Status
Resolvido
Resolvido em
1.2.0
Plugin/tema relacionado
Yoast SEO

Visão geral do problema

Após recentes mudanças importantes no Yoast 14.x, alguns usuários do WPML estão vendo o conteúdo do Yoast ser sempre gerado no idioma padrão.

Por exemplo, em uma página em um idioma secundário, isso pode ser as tags “meta” como “og:title” ou “og:description”, ou os URLs nos seus breadcrumbs.

Temos uma solução alternativa, mas devido à natureza do problema, ela pode não funcionar para todos. Estamos trabalhando para corrigir esse problema o mais rápido possível.

Se você estiver enfrentando problemas para traduzir o conteúdo do Yoast, tente a solução alternativa abaixo e aguarde a próxima versão do Yoast Multilingual antes de criar uma solicitação de suporte.

Solução alternativa

Adicione este código ao arquivo functions.php do seu 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;
} );

Após adicionar o código, instale o plugin Yoast Test Helper.
Vá para Ferramentas > Yoast Test e clique em “Reset Indexables tables & migrations”.
Por fim, vá para o seu Painel e clique no aviso do painel de administração que solicita que você indexe o site.

Se você tiver alguma dúvida ou quiser relatar um problema relacionado, mencione este problema conhecido para que nossa equipe possa fornecer um suporte eficiente.

Todos os problemas conhecidos →