Saya menjalankan WordPress 4.7.5, WooCommerce 3.0.7 dan versi cabang master Hyyan WooCommerce Polylang (diunduh 15 Mei, setelah perubahan WC 3 dilakukan).
Ketika email pesanan dikirim ke pelanggan dan admin, informasi variasi tidak ada.
Produk adalah produk variabel dengan variasi yang dibuat untuk setiap nilai dalam satu atribut.
Untuk produk dengan lebih dari satu atribut memiliki variasi yang dibuat untuk satu atribut. Dalam hal ini info atribut lainnya tidak muncul dalam email.
Ketika saya menonaktifkan Hyyan WooCommerce Polylang, informasi variasi muncul di email.
Kotak produk di email: Unicorn Fantasy Dog Bandana
Saat plugin dinonaktifkan: Unicorn Fantasy Dog Bandana - 12inch
Saya mencoba bereksperimen dengan filter 'woocommerce_order_item_name' untuk melihat nilai $item_name tetapi selalu nol!
Saya mencoba mengisolasi masalah dengan menonaktifkan panggilan add_filter untuk fungsi 'translateProductNameInOrdersDetails' di __construct() Hyyan\WPI\Order.php tetapi menghasilkan nama produk NULL!
Saya senang mencoba ide apa pun dan menambahkan pesan debug.
Silakan coba lagi dengan versi terbaru, sekarang dirilis sebagai Hyyan WooCommerce Polylang Integration 1.0.
Set pertama perubahan wooCommerce 3.0 tidak mencakup tinjauan menyeluruh terhadap variasi.
Karena itu, saya hanya menguji ulang dan dalam instalasi pengujian biasa saya:
Jika saya kemudian mematikan integrasi woo-poly dan polylang, saya mendapatkan hasil yang sama... jadi ini ada di template WooCommerce itu sendiri.
jadi jika perlu, Anda dapat menyesuaikan template atau mengajukan masalah ke WooCommerce.
Silakan periksa dan konfirmasi kembali di sini.
Saya melakukan pesanan percobaan dan informasi variasi tidak ada di kedua email.
Apakah ada yang bisa saya lakukan untuk membantu Anda men-debug masalah?
Nah, jika Anda memastikan bahwa informasi variasi tidak ada di email saat Polylang dan woo-poly dimatikan, maka plugin ini tidak bermasalah...
Saya menonaktifkan woo-poly dan sekarang saya melihat informasi variasi di email ke admin.
misalnya "Bintang Film Angkatan Laut Dog Bandana – 26inch" (di mana "26inch" adalah informasi variasi).
Saya mengaktifkan woo-poly lagi dan informasi variasi hilang lagi.
Informasi tambahan:
apakah itu dalam bahasa dasar atau bahasa kedua?
Bahasa dasar.
Apakah Anda ingin saya mencobanya dalam bahasa kedua? (situs hanya memiliki 2 bahasa aktif - Inggris dan Jerman).
Oke, inilah masalahnya:
Pesan.php l. 118** fungsi translateProductNameInOrdersDetails
sedang mencoba menjadi pintar dan menambahkan tautan pada setiap item pesanan untuk kembali ke detail produk serta [gagal] menerjemahkan nama variasi.
Anda dapat mengetahuinya dengan menambahkan baris pertama dari fungsi ini:
return $name;
Anda akan mendapatkan nama variasi produk di email dll tetapi akan selalu dalam bahasa dasar toko.
Pada pandangan pertama, penambahan tautan produk tampaknya merupakan fitur yang bagus dan memang tampaknya sangat lemah bahwa email pelanggan WooCommerce standar tidak menyertakan tautan sama sekali (!!), namun mungkin itu bukan tugas plugin ini untuk memodifikasi template email dengan cara ini.
Dan mungkin ada alasan mengapa wooCommerce tidak melakukan ini: pelanggan mungkin menyimpan email selama berabad-abad sebagai tanda terima, tetapi produk mungkin akan diedit nanti sehingga tidak lagi cocok dengan tautannya. Ini terlihat buruk jika pelanggan mengklik email pesanan lama nanti.
Jadi saya mungkin membuat ini pilihan ...
Saya juga punya alasan untuk perilaku yang tidak konsisten:
Secara pengamatan saya memiliki format berikut di toko yang dibangun selama setahun terakhir:
Jadi solusi yang benar mungkin memiliki elemen-elemen berikut:
Menyimpan nama secara logis dengan benar pasti lebih baik daripada mencoba mengaitkan dan mengubah nama di mana pun nama itu digunakan.
wooCommerce 3.0 memiliki beberapa kode untuk ini juga:
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() );
}
ok, ini semakin rumit, saya akan melaporkannya ke wooCommerce, tetapi ada pemeriksaan terkait 5 hari yang lalu dan ditambahkan ke 3.0.8: https://github.com/woocommerce/woocommerce/issues/15315
jadi akan masuk akal untuk meninjau itu.
Pada dasarnya wooCommerce 3.0.7 masih memiliki masalah dengan deskripsi variasi di Keranjang dan memang demikian di Pesanan.
Berikut adalah urutan dengan WooCommerce 3.0.7 biasa setelah mematikan integrasi Polylang dan 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 |
(Atribut Biru diganti namanya tetapi deskripsi untuk Keranjang/Pesanan tidak pernah diperbarui dengan benar)
Bagaimana wooCommerce melakukan tautan:
Di simpan:
class-wc-product-variable.php save() l.394 panggilan
$this->data_store->sync_variation_names( $this, $previous_name, $new_name );
class-wc-product-variable-data-store-cpt.php sync_variation_names() ll.304++
apakah string menggantikan dalam nama daripada nama baru
jadi di sini string variasi yang diterjemahkan tidak diambil, itu hanya mengganti bagian judul
Pada komentar sebelumnya, generate_product_title() adalah fungsi yang dilindungi dari kelas data internal sehingga tidak mudah diakses untuk diganti dari luar WooCommerce.
Jadi, terkait dengan semua ini adalah cara kerja WooCommerce-Polylang: pada tingkat variasi, WooCommerce-Polylang menambahkan referensinya sendiri untuk memastikan bahwa detail variasi biasanya diambil dari salinan bahasa master variasi - lihat masalah #168
Saya percaya menerapkan perbaikan sementara dengan menggunakan filter "woocommerce_product_variation_get_name".
Ada alternatif aneh lainnya yang disebutkan, untuk mematikan atribut produk di Judul yang berarti mereka harus dicetak setelah judul.
add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_false' );
Namun ini tidak bekerja untuk saya.
Ok, INI TETAP DI WOOCOMMERCE!!!
diuji dengan kode terbaru https://github.com/woocommerce/woocommerce "Versi 3.1.0-beta"
dan diharapkan akan dirilis pada 3.0.8.
dan dengan fungsi woo-poly translateProductNameInOrdersDetails() dimatikan,
maka perbaikan woocommerce akan berlaku
Juga jika ingin
add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_false' );
bekerja di WooCommerce yang diperbarui
Mungkin WooCommerce 3.1 daripada 3.0.8, lihat blog woocommerce: https://woocommerce.wordpress.com/
2 minggu dari 31 Mei akan menempatkan tanggal rilis mungkin 14 Juni.
perhatikan, sepertinya woocommerce/woocommerce#15315 diturunkan dari 3.0.8 pada menit terakhir, tetapi masih dijadwalkan untuk 3.1 dengan tinjauan yang lebih menyeluruh.
Jadi detail variasi dalam keranjang/pesanan mungkin akan tetap ganjil hingga saat itu.
Hasil khas mungkin misalnya:
Nama produk Spanyol - _Istilah Variasi Bahasa Inggris_
Nama Atribut - _Istilah Variasi Spanyol_