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になりました。
アイデアを試したり、デバッグメッセージを追加したりできてうれしいです。
Hyyan WooCommerce Polylang Integration1.0としてリリースされた最新バージョンでもう一度お試しください。
wooCommerce 3.0の変更の最初のセットには、バリエーションの徹底的なレビューが含まれていませんでした。
そうは言っても、私はそれを再テストしているだけで、プレーンなテストインストールで:
次に、woo-poly-integrationとpolylangの両方をオフにすると、同じ結果が得られます...したがって、これはWooCommerceテンプレート自体にあります。
したがって、必要に応じて、テンプレートを調整するか、WooCommerceに問題を提起することができます。
こちらで確認してください。
テスト注文をしましたが、バリエーション情報はどちらのメールにもありませんでした。
問題のデバッグを支援するために私にできることはありますか?
さて、 Polylangとwoo-polyがオフになってにないことを確認している場合は、このプラグインの問題ではありません...
woo-polyを無効にしたところ、管理者へのメールにバリエーション情報が表示されます。
例:「ネイビームービースターズドッグバンダナ– 26インチ」(「26インチ」はバリエーション情報)。
ウーポリを再度有効にすると、バリエーション情報が再び消えます。
追加情報:
それは基本言語ですか、それとも第二言語ですか?
基本言語。
第二言語で試してみませんか? (このサイトには、英語とドイツ語の2つのアクティブな言語しかありません)。
わかりました、ここに問題があります:
Order.phpl。 118 **関数translateProductNameInOrdersDetails
賢くなり、各注文アイテムにリンクを追加して、製品の詳細に戻り、バリエーション名を[失敗]翻訳しようとしています。
この関数の最初の行を追加することで、これを知ることができます。
return $name;
メールなどで商品バリエーションの名前がわかりますが、常にショップベースの言語で表示されます。
一見すると、製品リンクの追加は素晴らしい機能のように見えます。実際、標準のWooCommerceの顧客の電子メールにリンクがまったく含まれていないことは非常に不十分なようです(!!)が、おそらくこのプラグインの仕事ではないはずです。この方法でメールテンプレートを変更します。
そして、おそらくwooCommerceがこれを行わない理由があります。顧客はメールを領収書として何年も保持するかもしれませんが、製品は後で編集されてリンクと一致しなくなる可能性があります。 顧客が後で古い注文メールをクリックすると、これは見栄えが悪くなります。
だから私はこれをオプションにするかもしれません...
また、明らかに一貫性のない動作をする理由もあります。
観察的に、私は昨年建てられた店で次のフォーマットを持っています:
したがって、正しいソリューションには次の要素が含まれる可能性があります。
名前を論理的に正しく保存することは、使用される可能性のあるすべての場所で名前をフックして変更しようとするよりも優れている必要があります。
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のシーケンスです。
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に予定されていることに注意してください。
そのため、バスケット/注文のバリエーションの詳細は、それまで奇妙なままである可能性があります。
典型的な結果は次のようになります。
スペイン語の製品名-_英語のバリエーション用語_
属性名-_スペイン語のバリエーション用語_