Woo-poly-integration: 英語の注文メールにはバリエーション情報が含まれていません

作成日 2017年05月31日  ·  14コメント  ·  ソース: hyyan/woo-poly-integration

WordPress 4.7.5、WooCommerce 3.0.7、およびHyyan WooCommerce Polylangのマスターブランチバージョン(WC 3の変更がコミットされた後、5月15日にダウンロード)を実行しています。

注文メールが顧客と管理者に送信されると、バリエーション情報は表示されません。
製品は、単一の属性の値ごとに作成されたバリエーションを持つ可変製品です。
複数の属性を持つ製品の場合、1つの属性に対して作成されたバリエーションがあります。 この場合、他の属性情報電子メールに表示されます。

Hyyan WooCommerce Polylangを無効にすると、バリエーション情報がメールに表示されます。
メールの商品ボックス:ユニコーンファンタジードッグバンダナ
プラグインが無効になっている場合:Unicorn Fantasy DogBandana-12インチ

'woocommerce_order_item_name'フィルターを試して、$ item_nameの値を確認しようとしましたが、常にnullでした。
Hyyan \ WPI \ Order.phpの__construct()で 'translateProductNameInOrdersDetails'関数のadd_filter呼び出しを無効にして問題を特定しようとしましたが、製品名がNULLになりました。

アイデアを試したり、デバッグメッセージを追加したりできてうれしいです。

全てのコメント14件

Hyyan WooCommerce Polylang Integration1.0としてリリースされた最新バージョンでもう一度お試しください。
wooCommerce 3.0の変更の最初のセットには、バリエーションの徹底的なレビューが含まれていませんでした。

そうは言っても、私はそれを再テストしているだけで、プレーンなテストインストールで:

  • ショップオーナーへのメールにはバリエーションの詳細が含まれています
  • お客様へのメールにはバリエーションの詳細が含まれていません

次に、woo-poly-integrationとpolylangの両方をオフにすると、同じ結果が得られます...したがって、これはWooCommerceテンプレート自体にあります。
したがって、必要に応じて、テンプレートを調整するか、WooCommerceに問題を提起することができます。

こちらで確認してください。

テスト注文をしましたが、バリエーション情報はどちらのメールにもありませんでした。
問題のデバッグを支援するために私にできることはありますか?

さて、 Polylangとwoo-polyがオフになってないことを確認している場合は、このプラグインの問題ではありません...

woo-polyを無効にしたところ、管理者へのメールにバリエーション情報が表示されます。
例:「ネイビームービースターズドッグバンダナ– 26インチ」(「26インチ」はバリエーション情報)。

ウーポリを再度有効にすると、バリエーション情報が再び消えます。

追加情報:

  • バリエーションの詳細は、常にチェックアウト時に表示されます。
  • バリエーションの詳細は注文されていません-woo-polyがアクティブな場合の受信ページ。
  • woo-polyがアクティブな場合、バリエーションの詳細は管理者の電子メールに含まれません
  • バリエーションの詳細は、woo-polyがアクティブな場合は顧客の電子メールに表示されません(woo-polyが非アクティブの場合は表示されますが、気付いたものとは異なります)。

それは基本言語ですか、それとも第二言語ですか?

基本言語。
第二言語で試してみませんか? (このサイトには、英語とドイツ語の2つのアクティブな言語しかありません)。

わかりました、ここに問題があります:

Order.phpl。 118 **関数translateProductNameInOrdersDetails
賢くなり、各注文アイテムにリンクを追加して、製品の詳細に戻り、バリエーション名を[失敗]翻訳しようとしています。

この関数の最初の行を追加することで、これを知ることができます。
return $name;

メールなどで商品バリエーションの名前がわかりますが、常にショップベースの言語で表示されます。

一見すると、製品リンクの追加は素晴らしい機能のように見えます。実際、標準のWooCommerceの顧客の電子メールにリンクがまったく含まれていないことは非常に不十分なようです(!!)が、おそらくこのプラグインの仕事ではないはずです。この方法でメールテンプレートを変更します。
そして、おそらくwooCommerceがこれを行わない理由があります。顧客はメールを領収書として何年も保持するかもしれませんが、製品は後で編集されてリンクと一致しなくなる可能性があります。 顧客が後で古い注文メールをクリックすると、これは見栄えが悪くなります。
だから私はこれをオプションにするかもしれません...

また、明らかに一貫性のない動作をする理由もあります。

  • 標準のwooCommerce機能は、wp_posts.post_titleから派生しているように見えるproduct-> get_name()を使用します
    通常、このフィールドにはバリエーションのタイトルが表示されないため、追跡するのは困難ですが、実際のバリエーションのタイトルは、バリエーションの作成または保存時にインストールされたWooCommerceおよびWooCommercePolylang統合のバージョンによって異なる場合があります。

観察的に、私は昨年建てられた店で次のフォーマットを持っています:

  • [商品名]翻訳済みですがバリエーション情報はありません
  • [商品名]のバリエーション#[variation_id]
  • 【商品名】【バリエーション名】未翻訳のバリエーション名
  • 【商品名】【バリエーション名】翻訳されたバリエーション名

したがって、正しいソリューションには次の要素が含まれる可能性があります。

  • 正しいバリエーション名を特定し、製品の保存/更新時にこれが正しく設定されていることを確認します
  • 正しい製品バリエーション名とコードを再構築するスクリプトを作成して、プラグインの更新時に1回だけ実行します
  • 名前はネイティブに正しいため、関数translateProductNameInOrdersDetailsを削除できます...

名前を論理的に正しく保存することは、使用される可能性のあるすべての場所で名前をフックして変更しようとするよりも優れている必要があります。

wooCommerce 3.0にも、このためのコードがいくつかあります。

class-wc-product-variation-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() );
        }

わかりました、これは複雑になっています。wooCommerceに報告する予定でしたが、5日前に関連するチェックインがあり、3.0.8に追加されました: https
したがって、それを確認することは賢明です。

基本的に、wooCommerce 3.0.7には、カートのバリエーションの説明、したがって注文のバリエーションの説明にまだ問題があります。
これは、 PolylangとPolylangWooCommerceの統合をオフにした後のプレーンなWooCommerce3.0.7のシーケンスです。

  1. 黒と青の用語で色などの製品属性を作成します
  2. 黒と青のバリエーションを持つ新しいバリエーション商品を作成する
  3. 用語BlueをNewBlueに変更します
  4. 製品を表示-バリエーション「NewBlue」が表示されるようになりました
  5. バスケットに追加、バスケットを表示
  6. バスケットに次のように表示されます:テスト同期のバリエーション-青
    色:NewBlue
  7. 次に、製品を編集します。たとえば、タイトルを変更します…。
    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              |

(属性Blueの名前は変更されましたが、カート/注文の説明が正しく更新されることはありません)

wooCommerceはどのようにリンクを行いますか:
保存時:
class-wc-product-variable.php save()l.394呼び出し
$ this-> data_store-> sync_variation_names($ this、$ previous_name、$ new_name);
class-wc-product-variable-data-store-cpt.php sync_variation_names()ll.304 ++
新しい名前ではなく、名前内の文字列を置き換えますか
したがって、ここでは翻訳されたバリエーション文字列は取得されず、タイトル部分が置き換えられるだけです。

前のコメントでは、generate_product_title()は内部データクラスの保護された関数であるため、WooCommerceの外部からオーバーライドするために簡単にアクセスすることはできません。

したがって、これに関連して、WooCommerce-Polylangがどのように機能するかがわかります。バリエーションレベルでは、WooCommerce-Polylangは独自の参照を追加して、バリエーションの詳細がバリエーションのマスター言語コピーから通常取得されるようにします。問題#168を参照してください。

フィルタ「woocommerce_product_variation_get_name」を使用して一時的な修正を適用すると思います。

タイトルの製品属性をオフにするという、別の興味深い代替案があります。これは、代わりにタイトルの後に印刷する必要があることを意味します。
add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_false' );
しかし、これは私にはうまくいきません。

OK、これはWOOCOMMERCEで修正されました!!!

最新のコードでテスト済みhttps://github.com/woocommerce/woocommerce 「バージョン3.1.0-ベータ」
3.0.8でリリースされる予定です。

woo-poly translateProductNameInOrdersDetails()関数をオフにすると、
その後、woocommerce修正が適用されます

また、必要に応じて
add_filter( 'woocommerce_product_variation_title_include_attributes'、 '__ return_false');
更新されたWooCommerceで動作します

woocommerceブログを見ると、3.0.8ではなくWooCommerce 3.1である可能性があります
5月31日から2週間で、リリース日はおそらく6月14日になります。

woocommerce / woocommerce#15315は土壇場で3.0.8から削除されたようですが、より徹底的なレビューにより3.1に予定されていることに注意してください。
そのため、バスケット/注文のバリエーションの詳細は、それまで奇妙なままである可​​能性があります。

典型的な結果は次のようになります。

スペイン語の製品名-_英語のバリエーション用語_
属性名-_スペイン語のバリエーション用語_

このページは役に立ちましたか?
0 / 5 - 0 評価