- 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;
});