Woo-poly-integration: English Order email tidak termasuk informasi variasi

Dibuat pada 31 Mei 2017  ·  14Komentar  ·  Sumber: hyyan/woo-poly-integration

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.

Semua 14 komentar

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:

  • email ke pemilik toko termasuk detail variasi
  • email ke pelanggan tidak menyertakan detail variasi

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:

  • Detail variasi selalu ditampilkan di checkout.
  • Detail variasi tidak ada di halaman pesanan yang diterima saat woo-poly aktif.
  • Detail variasi tidak ada di email admin saat woo-poly aktif.
  • Detail variasi tidak ada di email pelanggan saat woo-poly aktif (ada saat woo-poly tidak aktif, berbeda dari yang Anda perhatikan).

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:

  • fungsionalitas wooCommerce standar menggunakan product->get_name() yang tampaknya berasal dari wp_posts.post_title
    Biasanya Anda tidak melihat judul variasi dari bidang ini, jadi sulit untuk melacaknya, namun judul variasi yang sebenarnya mungkin bergantung pada versi integrasi WooCommerce dan WooCommerce Polylang yang diinstal pada saat membuat atau menyimpan variasi.

Secara pengamatan saya memiliki format berikut di toko yang dibangun selama setahun terakhir:

  • [nama produk] diterjemahkan tetapi tidak ada informasi variasi
  • Variasi #[variation_id] dari [nama produk]
  • [nama produk] [nama variasi] nama variasi yang belum diterjemahkan
  • [nama produk] [nama variasi] terjemahan nama variasi

Jadi solusi yang benar mungkin memiliki elemen-elemen berikut:

  • mengidentifikasi nama variasi yang benar dan memastikan ini disetel dengan benar pada penyimpanan/pembaruan produk
  • buat skrip untuk membangun kembali nama dan kode variasi produk yang benar untuk menjalankannya tepat sekali pada pembaruan plugin
  • fungsi translateProductNameInOrdersDetails kemudian dapat dihapus, karena namanya akan benar secara asli...

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 .

  1. Buat Atribut Produk misalnya Warna dengan Ketentuan Hitam dan Biru
  2. Buat Produk Variasi baru dengan Variasi Hitam dan Biru
  3. Ubah Istilah Biru menjadi Biru Baru
  4. Lihat produk - sekarang menunjukkan variasi "NewBlue"
  5. Tambahkan ke Keranjang, Lihat Keranjang
  6. keranjang sekarang menunjukkan: Uji variasi Sinkronisasi - Biru
    warna: Biru Baru
  7. Sekarang edit produknya, misalnya ganti judul….
    Judul variasi tidak akan pernah sepenuhnya diatur ulang dan tetap dengan nilai atribut lama, karena kode WooCommerce hanya melakukan pencarian-penggantian pada judul produk lama, tidak pernah sepenuhnya membangun kembali judul.
    Betapapun banyak atribut produk diubah, judulnya tidak pernah disetel ulang:
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_

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

hyyan picture hyyan  ·  13Komentar

Skinperforator picture Skinperforator  ·  13Komentar

ngrudev picture ngrudev  ·  6Komentar

Jon007 picture Jon007  ·  19Komentar

dmytro-kindrat picture dmytro-kindrat  ·  14Komentar