Woo-poly-integration: O e-mail do pedido em inglês não inclui informações de variação

Criado em 31 mai. 2017  ·  14Comentários  ·  Fonte: hyyan/woo-poly-integration

Estou executando o WordPress 4.7.5, WooCommerce 3.0.7 e uma versão master branch do Hyyan WooCommerce Polylang (baixado em 15 de maio, depois que as alterações do WC 3 foram confirmadas).

Quando os e-mails do pedido são enviados ao cliente e ao administrador, as informações de variação não estão presentes.
Os produtos são produtos variáveis ​​com variações criadas para cada valor no atributo único.
Para produtos com mais de um atributo, existem variações criadas para um atributo. Neste caso, a outra informação atributo não aparecer no e-mail.

Quando eu desativo o Hyyan WooCommerce Polylang, as informações de variação aparecem nos e-mails.
Caixa do produto no e-mail: Unicorn Fantasy Dog Bandana
Quando o plugin está desativado: Unicorn Fantasy Dog Bandana - 12 polegadas

Tentei experimentar o filtro 'woocommerce_order_item_name' para ver o valor de $ item_name, mas sempre foi nulo!
Tentei isolar o problema desabilitando a chamada add_filter para a função 'translateProductNameInOrdersDetails' em Hyyan \ WPI \ Order.php's __construct (), mas resultou em um nome de produto NULL!

Estou feliz em experimentar quaisquer ideias e adicionar mensagens de depuração.

Todos 14 comentários

Tente novamente com a versão mais recente, agora lançada como Hyyan WooCommerce Polylang Integration 1.0.
O primeiro conjunto de alterações do wooCommerce 3.0 não incluiu uma revisão completa das variações.

Dito isso, estou apenas testando novamente e em minha instalação de teste simples:

  • o e-mail para o dono da loja inclui detalhes de variação
  • o e-mail para o cliente não inclui os detalhes da variação

Se eu desligar o woo-poly-integration e o polylang, obtenho o mesmo resultado ... então, isso está nos próprios modelos WooCommerce.
então, se você precisar, pode ajustar o modelo ou levantar o problema para WooCommerce.

Verifique e confirme aqui.

Fiz um pedido de teste e as informações de variação não estavam em nenhum dos e-mails.
Posso fazer algo para ajudá-lo a depurar o problema?

Bem, se você está confirmando que as informações de variação não estão no e-mail quando Polylang e woo-poly estão desligados, então não é um problema com este plug-in ...

Desativei o woo-poly e agora vejo as informações de variação no e-mail para o administrador.
por exemplo, "Navy Movie Stars Dog Bandana - 26" (onde "26" é a informação de variação).

Ativei o woo-poly novamente e as informações de variação desapareceram novamente.

Informações adicionais:

  • O detalhe da variação é sempre mostrado no check-out.
  • Os detalhes da variação não estão na página de recebimento do pedido quando o woo-poly está ativo.
  • Os detalhes da variação não estão no e-mail do administrador quando o woo-poly está ativo.
  • Os detalhes da variação não estão no e-mail do cliente quando o woo-poly está ativo (está lá quando o woo-poly está inativo, diferente do que você notou).

foi isso na língua base ou na segunda língua?

Idioma base.
Você quer que eu experimente no segundo idioma? (o site tem apenas 2 idiomas ativos - Inglês e Alemão).

Ok, aqui está o problema:

Order.php l. 118 ** função translateProductNameInOrdersDetails
está tentando ser inteligente e adicionar links em cada item do pedido para voltar aos detalhes do produto, bem como [falhando] traduzir o nome da variação.

Você pode saber isso adicionando a primeira linha desta função:
return $name;

Você receberá o nome da variação do produto nos e-mails, etc., mas sempre estará no idioma base da loja.

À primeira vista, a adição de links de produtos parece um bom recurso e, de fato, parece extremamente ridículo que os e-mails de clientes WooCommerce padrão não incluam nenhum link (!!), no entanto, provavelmente não deve ser o trabalho deste plugin para modificar os modelos de e-mail dessa maneira.
E provavelmente há um motivo pelo qual wooCommerce não faz isso: o cliente pode manter o e-mail por muito tempo como um recibo, mas o produto pode ser editado mais tarde, de forma que não corresponda mais ao link. Isso parecerá ruim se o cliente clicar no e-mail do pedido antigo mais tarde.
Então, eu posso fazer disso uma opção ...

Eu também tenho um motivo para o comportamento aparentemente inconsistente:

  • a funcionalidade padrão do wooCommerce usa product-> get_name () que parece derivar de wp_posts.post_title
    Normalmente você não vê o título da variação neste campo, por isso é difícil rastreá-lo; no entanto, os títulos reais da variação podem depender de quais versões de WooCommerce e WooCommerce integração Polylang foram instaladas no momento da criação ou salvamento das variações.

Observacionalmente, tenho os seguintes formatos em uma loja construída no ano passado:

  • [nome do produto] traduzido, mas sem informações de variação
  • Variação # [id_variável] de [nome do produto]
  • [nome do produto] [nome da variação] nome da variação não traduzido
  • [nome do produto] [nome da variação] nome da variação traduzido

Portanto, a solução correta pode ter os seguintes elementos:

  • identifique o nome de variação correto e certifique-se de que esteja configurado corretamente ao salvar / atualizar o produto
  • crie um script para reconstruir os nomes corretos da variação do produto e o código para executá-lo exatamente uma vez na atualização do plug-in
  • a função translateProductNameInOrdersDetails pode então ser removida, uma vez que o nome estará correto nativamente ...

Salvar logicamente o nome corretamente deve ser melhor do que tentar enganchar e alterar o nome em todos os lugares em que ele pode ser usado.

wooCommerce 3.0 tem alguns códigos para isso também:

classe-wc-produto-variação-dados-loja-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, isso está ficando complicado, eu ia denunciá-lo ao wooCommerce, mas há um check-in relacionado há 5 dias e adicionado ao 3.0.8: https://github.com/woocommerce/woocommerce/issues/15315
então seria sensato revisar isso.

Basicamente, wooCommerce 3.0.7 ainda tem problemas com a descrição da variação no carrinho e, portanto, nos pedidos.
Aqui está uma sequência com o WooCommerce 3.0.7 simples após desligar o Polylang e a integração do Polylang WooCommerce .

  1. Crie um atributo de produto, por exemplo, cor com termos preto e azul
  2. Crie um novo produto de variação com variações para preto e azul
  3. Altere o termo Blue para NewBlue
  4. Veja o produto - agora mostra a variação “NewBlue”
  5. Adicionar ao cesto, ver cesto
  6. cesta agora mostra: variações de sincronização de teste - azul
    cor: NewBlue
  7. Agora edite o produto, por exemplo, altere o título….
    O título da variação nunca será totalmente redefinido e permanecerá com o valor do atributo antigo, porque o código WooCommerce apenas faz a busca e substituição no título do produto antigo, ele nunca reconstrói totalmente o título.
    Por mais que o atributo do produto seja alterado, o título nunca é redefinido:
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              |

(O atributo Azul é renomeado, mas a descrição para Carrinho / Pedido nunca é atualizada adequadamente)

Como o wooCommerce faz o link:
Ao salvar:
class-wc-product-variable.php save () l.394 chamadas
$ this-> data_store-> sync_variation_names ($ this, $ previous_name, $ new_name);
class-wc-product-variable-data-store-cpt.php sync_variation_names () ll.304 ++
uma string substitui dentro dos nomes em vez de um novo nome
então aqui uma string de variação traduzida não é escolhida, ela está apenas substituindo a parte do título

No comentário anterior, generate_product_title () é uma função protegida de uma classe de dados interna que não está prontamente acessível para substituição de fora do WooCommerce.

Então, relacionado a tudo isso é como o WooCommerce-Polylang está funcionando: em um nível de variação, o WooCommerce-Polylang adiciona sua própria referência para garantir que os detalhes da variação sejam normalmente recuperados da cópia da linguagem mestre da variação - consulte a edição nº 168

Acredito que aplique uma correção temporária usando um filtro "woocommerce_product_variation_get_name".

Há outra alternativa curiosa mencionada, desligar os atributos do produto no Título, o que significa que eles devem ser impressos após o título.
add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_false' );
No entanto, isso não funciona para mim.

Ok, ISTO ESTÁ CORRIGIDO NO WOOCOMMERCE !!!

testado com o código mais recente https://github.com/woocommerce/woocommerce "Versão 3.1.0-beta"
e esperado para ser lançado em 3.0.8.

e com a função woo-poly translateProductNameInOrdersDetails () desligada,
então a correção woocommerce será aplicada

Também se quisesse o
add_filter ('woocommerce_product_variation_title_include_attributes', '__return_false');
funciona no WooCommerce atualizado

Pode ser WooCommerce 3.1 em vez de 3.0.8, acessando o blog woocommerce: https://woocommerce.wordpress.com/
2 semanas a partir de 31 de maio colocariam a data de lançamento em 14 de junho.

observe, parece que woocommerce / woocommerce # 15315 foi retirado de 3.0.8 no último minuto, mas ainda está programado para 3.1 com uma revisão mais completa.
Portanto, os detalhes de variação na cesta / pedidos podem continuar estranhos até então.

O resultado típico pode ser, por exemplo:

Nome do produto em espanhol - _Termo de variação em inglês_
Nome do atributo - _Termo de variação do espanhol_

Esta página foi útil?
0 / 5 - 0 avaliações