WPML
Status
Resolvido
Resolvido em
WooCommerce Multilingual & Multicurrency 5.5.2
Tags de tópico
WCML

Visão geral do problema

Se você tiver produtos traduzidos anteriormente com o Editor de tradução clássico (CTE) e depois atualizar suas configurações do WPML para usar o ATE (apenas para novas traduções), editar esses produtos traduzidos anteriormente os abrirá incorretamente no ATE em vez do CTE.

(Isso afeta especificamente Produtos e não outros tipos de post.)

Solução alternativa

O problema ocorre porque os detalhes de qual editor foi usado são armazenados incorretamente para os produtos.

Parte da solução é corrigir isso, para que, ao traduzir produtos pelo CTE, ele registre corretamente o editor de tradução, de modo que abra no editor correto da próxima vez.

Mas também precisamos corrigir todos os dados existentes que registram o editor errado para produtos que já foram editados com o CTE.

Vamos lidar com essa segunda parte primeiro, para a qual precisamos executar esta consulta SQL personalizada:

UPDATE wp_icl_translate_job AS job
JOIN (
    SELECT job.job_id
    FROM wp_icl_translate_job AS job
    LEFT JOIN wp_icl_translation_status AS status ON job.rid = status.rid
    LEFT JOIN wp_icl_translations AS translations ON status.translation_id = translations.translation_id
    WHERE translations.element_type = 'post_product'
) AS derived
ON job.job_id = derived.job_id
SET job.editor = 'wpml'
WHERE job.editor = 'wp';

Se o seu banco de dados usar um prefixo diferente de `wp_` para as tabelas, será necessário ajustá-las (há quatro menções de `wp_icl_` acima).

Você pode executar essa consulta usando o phpMyAdmin ou por meio de um plugin Adminer.

Em seguida, para garantir que os detalhes do editor sejam armazenados corretamente daqui para frente, você precisa adicionar o seguinte (por meio de algum plugin de snippet de código ou no arquivo functions.php do tema):

/**
 * WPMLSUPP-12927: Temporary fix to correctly record CTE editor for products
 */
add_filter( 'wpml_translation_editor_save_job_data', function( $data ){

	if ( $data['job_post_type'] == "post_product" ) {

		add_action( 'wpml_save_job_fields_from_post', function( $job_id ){

			wpml_tm_load_old_jobs_editor()->set( $job_id, 'wpml' );
		});
	}

	return $data;
});

Todos os problemas conhecidos →