Woo-poly-integration: El correo electrónico de pedido en inglés no incluye información sobre variaciones

Creado en 31 may. 2017  ·  14Comentarios  ·  Fuente: hyyan/woo-poly-integration

Estoy ejecutando WordPress 4.7.5, WooCommerce 3.0.7 y una versión de rama maestra de Hyyan WooCommerce Polylang (descargado el 15 de mayo, después de que se comprometieron los cambios de WC 3).

Cuando los correos electrónicos del pedido se envían al cliente y al administrador, la información de variación no está presente.
Los productos son productos variables con variaciones creadas para cada valor en el atributo único.
Para los productos con más de un atributo, se han creado variaciones para un atributo. En este caso la otra información de atributo aparece en el correo electrónico.

Cuando desactivo Hyyan WooCommerce Polylang, la información de variación aparece en los correos electrónicos.
Caja del producto en el correo electrónico: Unicorn Fantasy Dog Bandana
Cuando el complemento está desactivado: Unicorn Fantasy Dog Bandana - 12 pulgadas

Intenté experimentar con el filtro 'woocommerce_order_item_name' para ver el valor de $ item_name, ¡pero siempre fue nulo!
Intenté aislar el problema deshabilitando la llamada add_filter para la función 'translateProductNameInOrdersDetails' en __construct () de Hyyan \ WPI \ Order.php, ¡pero resultó en un nombre de producto NULO!

Estoy feliz de probar cualquier idea y agregar mensajes de depuración.

Todos 14 comentarios

Vuelva a intentarlo con la última versión, ahora lanzada como Hyyan WooCommerce Polylang Integration 1.0.
El primer conjunto de cambios de wooCommerce 3.0 no incluyó una revisión exhaustiva de las variaciones.

Habiendo dicho eso, solo lo estoy volviendo a probar y en mi instalación de prueba simple:

  • el correo electrónico al propietario de la tienda incluye detalles de variación
  • el correo electrónico al cliente no incluye el detalle de la variación

Si luego desactivo woo-poly-integration y polylang, obtengo el mismo resultado ... así que esto está en las propias plantillas de WooCommerce.
por lo que, si lo necesita, puede ajustar la plantilla o plantear el problema a WooCommerce.

Por favor revise y confirme aquí.

Hice un pedido de prueba y la información de variación no estaba en ninguno de los correos electrónicos.
¿Hay algo que pueda hacer para ayudarlo a solucionar el problema?

Bueno, si está confirmando que la información de variación no está en el correo electrónico cuando Polylang y woo-poly están desactivados, entonces no es un problema con este complemento ...

Inhabilité woo-poly y ahora veo la información de variación en el correo electrónico del administrador.
por ejemplo, "Pañuelo para perros Navy Movie Stars - 26 pulgadas" (donde "26 pulgadas" es la información de variación).

Volví a habilitar woo-poly y la información de variación desapareció nuevamente.

Información adicional:

  • El detalle de la variación siempre se muestra en el pago.
  • Los detalles de la variación no están en la página de pedidos recibidos cuando woo-poly está activo.
  • El detalle de la variación no está en el correo electrónico del administrador cuando woo-poly está activo.
  • El detalle de la variación no está en el correo electrónico del cliente cuando woo-poly está activo (está allí cuando woo-poly está inactivo, diferente de lo que notó).

¿Fue eso en el idioma base o en el segundo idioma?

Idioma base.
¿Quieres que lo pruebe en el segundo idioma? (el sitio solo tiene 2 idiomas activos: inglés y alemán).

Ok, aquí está el problema:

Order.php l. 118 ** función translateProductNameInOrdersDetails
está tratando de ser inteligente y agregar enlaces en cada artículo de pedido para volver a los detalles del producto, así como [no] traducir el nombre de la variación.

Puede saber esto agregando la primera línea de esta función:
return $name;

Obtendrá el nombre de la variación del producto en los correos electrónicos, etc., pero siempre estará en el idioma base de la tienda.

A primera vista, la adición de enlaces de productos parece una buena característica y, de hecho, parece muy poco convincente que los correos electrónicos estándar de los clientes de WooCommerce no incluyan ningún enlace (!!), sin embargo, probablemente no debería ser el trabajo de este complemento. para modificar las plantillas de correo electrónico de esta manera.
Y probablemente haya una razón por la que wooCommerce no hace esto: el cliente puede conservar el correo electrónico durante años como recibo, pero el producto puede editarse más tarde para que ya no coincida con el enlace. Esto se ve mal si el cliente hace clic en el correo electrónico del pedido anterior más tarde.
Así que podría hacer de esto una opción ...

También tengo una razón para el aparente comportamiento inconsistente:

  • la funcionalidad estándar de wooCommerce usa product-> get_name () que parece derivar de wp_posts.post_title
    Normalmente, no ve el título de la variación de este campo, por lo que es difícil de rastrear, sin embargo, los títulos de variación reales pueden depender de qué versiones de WooCommerce y la integración de WooCommerce Polylang se instalaron en el momento de crear o guardar las variaciones.

Observacionalmente tengo los siguientes formatos en una tienda construida durante el último año:

  • [nombre del producto] traducido pero sin información de variación
  • Variación n.º [variación_id] de [nombre del producto]
  • [nombre del producto] [nombre de la variación] nombre de la variación sin traducir
  • [nombre del producto] [nombre de la variación] nombre de la variación traducida

Entonces, la solución correcta puede tener los siguientes elementos:

  • identificar el nombre de variación correcto y asegurarse de que esté configurado correctamente al guardar / actualizar el producto
  • crear un script para reconstruir los nombres correctos de las variaciones del producto y el código para ejecutarlo exactamente una vez en la actualización del complemento
  • la función translateProductNameInOrdersDetails podría eliminarse, ya que el nombre será correcto de forma nativa ...

Lógicamente, guardar el nombre correctamente debe ser mejor que intentar enganchar y cambiar el nombre en todos los lugares donde se pueda usar.

wooCommerce 3.0 también tiene un código para esto:

class-wc-product-variación-data-store-cpt-php ll.73-83

        /**
         * If a variation title is not in sync with the parent e.g. saved prior to 3.0, or if the parent title has changed, detect here and update.
         */
        if ( version_compare( get_post_meta( $product->get_id(), '_product_version', true ), '3.0', '<' ) && ( $parent_title = get_post_field( 'post_title', $product->get_parent_id() ) ) && 0 !== strpos( $post_object->post_title, $parent_title ) ) {
            global $wpdb;

            $new_title = $this->generate_product_title( $product );
            $product->set_name( $new_title );
            $wpdb->update( $wpdb->posts, array( 'post_title' => $new_title ), array( 'ID' => $product->get_id() ) );
            clean_post_cache( $product->get_id() );
        }

ok, esto se está complicando, iba a informar a wooCommerce, pero hay un registro relacionado hace 5 días y se agregó a 3.0.8: https://github.com/woocommerce/woocommerce/issues/15315
por lo que sería sensato revisar eso.

Básicamente, wooCommerce 3.0.7 todavía tiene problemas con la descripción de la variación en el carrito y, por lo tanto, en los pedidos.
Aquí hay una secuencia con WooCommerce 3.0.7 simple después de desactivar la integración de Polylang y Polylang WooCommerce .

  1. Cree un atributo de producto, por ejemplo, color con términos negro y azul
  2. Cree un nuevo producto de variación con variaciones para negro y azul
  3. Cambiar el término Blue a NewBlue
  4. Ver el producto: ahora muestra la variación "NewBlue"
  5. Añadir a la cesta, Ver cesta
  6. La cesta ahora muestra: Variaciones de sincronización de prueba - Azul
    color: NewBlue
  7. Ahora edite el producto, por ejemplo cambie el título….
    El título de la variación nunca se restablecerá por completo y permanecerá con el valor del atributo anterior, porque el código de WooCommerce solo busca y reemplaza el título del producto anterior, nunca reconstruye completamente el título.
    Por mucho que se cambie el atributo del producto, el título nunca se restablece:
mysql> select ID, post_title from wp_posts where ID>456;
+-----+---------------------------------------------+
| ID  | post_title                                  |
+-----+---------------------------------------------+
| 457 | Test Sync variations 2                      |
| 458 | Test Sync variations 2 - Blue               |
| 459 | Test Sync variations 2 - Black              |

(Se cambia el nombre del atributo Azul, pero la descripción de Carrito / Pedido nunca se actualiza correctamente)

Cómo wooCommerce hace el enlace:
Al guardar:
class-wc-product-variable.php save () l.394 llamadas
$ this-> data_store-> sync_variation_names ($ this, $ previous_name, $ new_name);
class-wc-product-variable-data-store-cpt.php sync_variation_names () ll.304 ++
¿Reemplaza una cadena dentro de los nombres en lugar de un nuevo nombre?
por lo que aquí no se selecciona una cadena de variación traducida, solo reemplaza la parte del título

En el comentario anterior, generate_product_title () es una función protegida de una clase de datos internos, por lo que no es fácilmente accesible para anularla desde fuera de WooCommerce.

Entonces, relacionado con todo esto es cómo funciona WooCommerce-Polylang: en un nivel de variación, WooCommerce-Polylang agrega su propia referencia para garantizar que los detalles de la variación se recuperen normalmente de la copia del idioma maestro de la variación; consulte el número 168

Creo que aplique una solución temporal mediante el uso de un filtro "woocommerce_product_variation_get_name".

Hay otra alternativa curiosa mencionada, desactivar los atributos del producto en el título, lo que significa que deberían imprimirse después del título.
add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_false' );
Sin embargo, esto no funciona para mí.

Ok, ESTO ESTÁ FIJADO EN WOOCOMMERCE !!!

probado con el último código https://github.com/woocommerce/woocommerce "Versión 3.1.0-beta"
y se espera que se publique en 3.0.8.

y con la función woo-poly translateProductNameInOrdersDetails () desactivada,
entonces se aplicará la corrección de woocommerce

Además, si quisiera el
add_filter ('woocommerce_product_variation_title_include_attributes', '__return_false');
funciona en el WooCommerce actualizado

Podría ser WooCommerce 3.1 en lugar de 3.0.8, mirando el blog de woocommerce: https://woocommerce.wordpress.com/
Dos semanas a partir del 31 de mayo pondrían la fecha de lanzamiento como quizás el 14 de junio.

tenga en cuenta que parece que woocommerce / woocommerce # 15315 se eliminó de 3.0.8 en el último minuto, pero aún está programado para 3.1 con una revisión más exhaustiva.
Por lo tanto, los detalles de variación en la cesta / pedidos pueden seguir siendo extraños hasta entonces.

El resultado típico puede ser, por ejemplo:

Nombre del producto en español - _ Término de variación en inglés_
Nombre del atributo - _ Término de variación en español_

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

FrankRosElche picture FrankRosElche  ·  33Comentarios

ngrudev picture ngrudev  ·  6Comentarios

Skinperforator picture Skinperforator  ·  13Comentarios

dmytro-kindrat picture dmytro-kindrat  ·  14Comentarios

Tii picture Tii  ·  27Comentarios