- Estado
- Resuelto
- Resuelto en
- WooCommerce Multilingual & Multicurrency 5.5.2
- Etiquetas de temática
- WCML
Resumen del problema
Si tiene productos traducidos previamente con el Editor de traducción clásico (CTE) y luego actualiza su configuración de WPML para usar ATE (solo para traducciones nuevas), al editar esos productos traducidos previamente, se abrirán erróneamente en ATE en lugar de CTE.
(Esto afecta específicamente a los Productos y no a otros tipos de contenido.)
Solución alternativa
El problema surge porque los detalles sobre qué editor se utilizó se almacenan incorrectamente para los productos.
Parte de la solución consiste en corregir esto, de modo que al traducir productos a través de CTE se registre correctamente el editor de traducción para que se abra en el editor correcto la próxima vez.
Pero también tenemos que corregir todos los datos existentes que registran el editor incorrecto para los productos que ya se editaron con CTE.
Primero, abordaremos esa segunda parte, para lo cual debemos ejecutar 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';
Si su base de datos utiliza un prefijo diferente a `wp_` para las tablas, deberá ajustarlos (hay cuatro menciones de `wp_icl_` en el código anterior).
Puede ejecutar esta consulta usando phpMyAdmin o mediante un plugin de Adminer.
Luego, para garantizar que los detalles del editor se almacenen correctamente en el futuro, debe añadir lo siguiente (mediante algún plugin de fragmentos de código o en el archivo functions.php del 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;
});