Saltar al contenido Saltar a la barra lateral

Este es el foro de soporte técnico de WPML, el plugin multilingüe de WordPress.

Todas las personas pueden leerlo pero solo los clientes de WPML pueden ingresar comentarios. El equipo de WPML responde en los foros 6 días a la semana, 22 horas por día.

Sun Mon Tue Wed Thu Fri Sat
- 8:00 – 15:00 8:00 – 15:00 8:00 – 15:00 8:00 – 15:00 8:00 – 15:00 -
- 16:00 – 17:00 16:00 – 17:00 16:00 – 17:00 16:00 – 17:00 16:00 – 17:00 -

Zona horaria del soporte: Europe/Rome (GMT+02:00)

Este tema contiene 7 respuestas, tiene 2 voices.

Última actualización por Alejandro hace 1 año, 5 meses.

Asistido por: Alejandro.

Autor Publicaciones
mayo 21, 2024 a las 11:03 am #15650081

eurodesguace-malaga-slE

Estamos intentando traducir la web de forma automática, pero en cuanto intentamos traducir los productos y vehículos no funciona como debería. Hemos añadido código al functions para solucionar ciertas cosas que vimos en vuestra documentación.

Por un lado nos ocurre que al traducir de forma automática nunca termina de traducir los productos (hay una gran cantidad de referencias que se van actualizando). Al actualizarse algunos productos, se vuelven a poner en cola de traducción. Por tanto nunca para.

Por otro lado, nos ocurre también que se borran los productos al iniciarse la traducción, adjunto codigo:

function my_is_post_to_delete( $is_post_to_delete, $post_id, $import ) {

    // Unless you want this code to execute for every import, check the import id
    if ( in_array($import->id, [7,8])) {

        $post_language_details = apply_filters( 'wpml_post_language_details', NULL, $post_id );
        $post_language = $post_language_details['language_code'];

        if ( $post_language == 'pt-pt' ) {
            return false;
        }

        if ( $post_language == 'es' ) {

            // Verificar si WPML está activo
            if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
                // Obtener la ID del post traducido en 'pt-pt' si existe
                $post_id_pt = apply_filters( 'wpml_object_id', $post_id, 'post', true, 'pt-pt' );

                // Verificar si se encontró una traducción en 'pt-pt'
                if ( $post_id_pt ) {
                    // Mover el post traducido a la papelera
                    wp_trash_post( $post_id_pt );
                }
            }

            return true;
        }

    }

    return true;

}
add_filter( 'wp_all_import_is_post_to_delete', 'my_is_post_to_delete', 10, 3 );
mayo 22, 2024 a las 2:12 pm #15658830

Alejandro
Partidario de WPML desde 02/2018

Idiomas: Inglés (English ) Español (Español ) Italiano (Italiano )

Zona horaria: Europe/Rome (GMT+02:00)

Hola!

Mencionas:

hay una gran cantidad de referencias que se van actualizando

Puedes darme más detalle sobre esto? que tipo de referencias se van actualizando?

El código que estás usando se agrega a WP All Import, pero luego mencionas una traducción de productos en modo automático. Me puedes decir el proceso que tienes para agregar los productos? usas WooCommerce con algún tipo de "cron" para subir productos en un cierto horario o algo así?

Avísame para entender mejor cómo continuar.
------------

Mientras tanto, te avíso que WPML requiere un mínimo de 128 MB de memoria para poder funcionar correctamente (lo mismo aplica para WooCommerce y los page builders) y tu solo tienes 40M así que por favor agrega este código en tu archivo wp-config.php, justo luego después de la información de la base de datos:

define ('WP_MEMORY_LIMIT', '256M');
define ('WP_MAX_MEMORY_LIMIT', '256M');

Estos son los requisitos mínimos de WPML: https://wpml.org/home/minimum-requirements/

mayo 23, 2024 a las 2:11 pm #15663764

eurodesguace-malaga-slE

Estamos realizando una importación con WP All Import, configurada como que afecta al idioma español y de forma que si un producto ya no está disponible en la lista de importación, el producto es enviado a la papelera.
Lo mismo ocurre con un Post personalizado que hemos creado que se llama Vehículo, con las mismas condiciones: si el vehículo ya no está en la importación, se manda a la papelera.

Vehículo y Producto se relacionan mediante un campo personalizado que hemos añadido a producto.

Ambos tipos de posts (productos y vehículos) están marcados como traducibles.
Cuando lanzamos la traducción automática, los productos y vehículos se van actualizando pero en la siguiente importación vuelven a moverse las traducciones (portugués) en la papelera.
Creemos que la importación los reconoce como posts que ya no están en el archivo CSV utilizado.
El proceso de traducción tampoco los vuelve a traducir ni a crear.

Hemos probado varias formas mediante script de evitar este comportamiento, pero cada día aparecen los vehículos nuevos como eliminados en la papelera:

Actualmente hemos probado con ésta, que tampoco parece funcionar:

function my_is_post_to_delete( $is_post_to_delete, $post_id, $import ) {

// Unless you want this code to execute for every import, check the import id

if ($is_post_to_delete && in_array($import->id, [7,8])) {

$post_language_details = apply_filters( 'wpml_post_language_details', NULL, $post_id );
$post_language = $post_language_details['language_code'];

if ( strpos($post_language, 'pt') !== false ) {
return false;
}

if ( strpos($post_language, 'es') !== false ) {

// Verificar si WPML está activo
if ( defined( 'ICL_SITEPRESS_VERSION' ) ) {
// Obtener la ID del post traducido en 'pt-pt' si existe
$post_id_pt = apply_filters( 'wpml_object_id', $post_id, 'post', true, 'pt-pt' );

if ( $post_id_pt ) {
// Mover el post traducido a la papelera
wp_trash_post( $post_id_pt );
}
}

return true;
}

}

return true;

}
add_filter( 'wp_all_import_is_post_to_delete', 'my_is_post_to_delete', 10, 3 );

mayo 23, 2024 a las 3:25 pm #15664186

Alejandro
Partidario de WPML desde 02/2018

Idiomas: Inglés (English ) Español (Español ) Italiano (Italiano )

Zona horaria: Europe/Rome (GMT+02:00)

Ok, perfecto. puedes hacer una prueba? puedes tratar de manualmente traducir una página que se había enviado anteriormente y que está publicada pero no traducida. revisa si cuando la tratas de traducir abriendo el editor avanzado, este aparece con el contenido traducido correctamente sin usar créditos (puedes ver eso al inicio de la página donde te dice si se han usado créditos).

Esto te lo pido porque en este caso, donde se involucra código personalizado, estamos un poco restringidos con lo que podemos hacer ya que de no ser por este procedimiento de agregar/borrar contenido (que no llega de WPML), probablemente este problema no sucedería.

-------------------

Es muy probable que el problema se encuentre en esta parte del workflow:

... si un producto ya no está disponible en la lista de importación, el producto es enviado a la papelera.

Si se corre un cron, un código personalizado o algo así que usa en algún momento la WP_QUERY, tienes que asegurarte de que este filtre por idiomas, o sino es normal que se borre, porque como mencionas, no se encuentra en el CSV (ya que se encuentran solo los del idioma origina).

Este procedimiento de borrado lo haces con algún código específico? si es así, me lo puedes envíar para ver como te puedo ayudar?

mayo 27, 2024 a las 7:57 am #15672455

eurodesguace-malaga-slE

Hola, Alejandro.

Hemos corregido lo del límite de memoria (no teníamos los scripts correctamente situados en el wp-config).

No utilizamos un script ni cron específicos para borrar los productos ni vehículos más allá de la configuración propia que incluye WP All Import:

[x] Remove or modify all vehículos/products on this site that are not present in this import file

[x] Instead of deletion...
[x] Send removed vehículos/products to trash

En la importación de productos los productos se identifican por el campo sku (refid) mientras que en la de vehículos por el campo personalizado codvehiculo.

El script personalizado que os enviamos antes obedece a nuestro intento de que no sigan desapareciendo las traducciones, ya que es el resultado original sin que realicemos ninguna intervención.

Hemos traducido manualmente un vehículo:
enlace oculto tal y como nos has solicitado, que sería la traducción de enlace oculto

Por otra parte, nos sucede que aunque por defecto los campos personalizados (generados con Advanced Custom Fields) están marcados como traducibles desde la admin de WPML, con la configuración de "Los mismos campos en todos los idiomas", pero no nos aparecen ni en la administración del post ni en el front de la web.

Muchas gracias

mayo 27, 2024 a las 10:08 am #15673210

Alejandro
Partidario de WPML desde 02/2018

Idiomas: Inglés (English ) Español (Español ) Italiano (Italiano )

Zona horaria: Europe/Rome (GMT+02:00)

Ok. el problema está casi seguramentecreado por el WP All Import ya que por lo que veo si se traduce el contenido manualmente, todo funciona.

Ahora mencionas lo siguiente:

En la importación de productos los productos se identifican por el campo sku (refid) mientras que en la de vehículos por el campo personalizado codvehiculo.

Por qué no usas siempre el SKU? hay alguna razón específica para ello?

Disculpa si te hago tantas preguntas pero es que no logro dar con la raíz del problema y este problema que mencionas no es para nada algo normal.

--------------

Mi última pregunta es: en este momento tienes activado "translate everything" pero NINGUN producto se traduce automáticamente? ni uno siquiera? aparecen en curso pero nunca se terminan de traducir, cierto?

Si vas a WPML > Soporte > Editor Avanzado de Traducción > Registro de errores, seguro ves algún set de errores por allí.

en nuestro sistema, con excepción del vehiculo que has enviado, el otro que aparece traducido es enlace oculto y se tradujo el 21 de este mes. fue traducido y cargado en tu sitio sin problemas.

Esto me dice que si hay otros productos/vehiculos que no se cargan, es porque hay algo que está constantemente cambiandolos o modificandolos y por ende siempre se envían a traducir.

Puedes avisarme por favor y escribirme los pasos que sigues para revisar el problema?

mayo 28, 2024 a las 9:09 am #15677110

eurodesguace-malaga-slE

Efectivamente, el problema está relacionado con WP All Import, pero ellos tampoco proporcionan soporte si el problema está relacionado con traducciones, y estamos en un círculo vicioso.

Utilizamos identificadores diferentes porque los productos, son productos de Woocommerce y tienen SKU (los productos son piezas y recambios)

Los vehículos, por otra parte, son un tipo de post específico creado que se llama Vehículo, no es un producto de Woocommerce, y tiene sus propios campos personalizados.

Productos y vehículos se relacionan entre sí mediante un campo personalizado dentro del Producto, que guarda el identificador del Vehículo al que pertenece.

-----

En este momento productos y vehículos, que se importan con importaciones diferentes ya que afectan a posts de tipos diferentes, se importan y traducen, pero la configuración de "eliminar productos ó vehículos que ya no estén disponibles en el archivo de importación" está afectando también a las traducciones (por eso el código para intentar solventarlo que os enviamos, que probamos viendo algo parecido en un foro, pero no está funcionando)

Vehículos y productos se traducen, pero a la siguiente sincronización, van todas las traducciones a la papelera.

En cuanto a lo de que los vehículos se están actualizando contínuamente, puede ser que haya algún cambio en el CSV que se está utilizando y que esté obligando a la actualización de todos los vehículos. Lo tengo que revisar. Pero eso en los productos no ocurre. En la última importación de productos tenemos "105 Productos created
64 updated, 13227 skipped". 13227 no se han actualizado pero su traducción no se está realizando tampoco.
Por cierto, los vehículos que ayer estaban en portugués y que te enviamos de ejemplo, hoy ya no están.

En cuanto a los registros, sí que tenemos como 50 logs, etiquetados todos como Expectation Failed y un Gateway timeout, pero no sabría interpretar los datos extas de cada uno.

-----

Por otra parte, sigo sin tener claro por qué los campos personalizados no nos aparecen ni en la administración del post ni en el front de la web cuando sí tenemos traducción del vehículo.

mayo 28, 2024 a las 9:50 am #15677422

Alejandro
Partidario de WPML desde 02/2018

Idiomas: Inglés (English ) Español (Español ) Italiano (Italiano )

Zona horaria: Europe/Rome (GMT+02:00)

Ok, voy a hacer lo más que pueda para poderte ayudar. sé que estás en un circulo vicioso porque efectivamente estás haciendo algo que en realidad no fue nunca testeado y por ende es tomado como fuera del soporte.

Para poder llegar a la raíz del problema tenemos que simplificar la situación y en este caso debería ser un poco más simple:

Si con WP All Import tu borras (mandas a la papelera) un post o página (es decir, un elemento nativo y no un CPT), puedes ver si sucede lo mismo?

Para ellos probablemente se necesite una regla un poco diferente, pero si con esto sucede lo mismo entonces el próx paso sería el de:

- Escribir todos los pasos para poder recrear el problema (o haer un video donde muestras todos los pasos)
- Recrearlo en un sitio nuevo como este: enlace oculto

Si eso es posible, entonces casi seguramente podré ayudarte ya que con eso se quita la parte del "custom coding" y me ayuda a poder pasarlo al team de compatibilidad.

El tema '[Cerrado] No podemos realizar la traducción automática de nuestros productos' está cerrado a nuevas respuestas.