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.
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:
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:
¿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:
Observacionalmente tengo los siguientes formatos en una tienda construida durante el último año:
Entonces, la solución correcta puede tener los siguientes elementos:
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 .
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_