Woo-poly-integration: Masalah dengan Produk Variabel

Dibuat pada 4 Nov 2020  ·  33Komentar  ·  Sumber: hyyan/woo-poly-integration

Hai,

Kami memiliki masalah dalam mengedit produk variabel setelah pembaruan woocommerce terakhir.

Data produk menunjukkan "Produk Sederhana" tetapi produknya bervariasi.

Bisakah Anda mereproduksi masalah ini pada tema Wordpress default (misalnya Storefront)?

Bisakah Anda mereproduksi masalah ini ketika semua plugin lain dinonaktifkan kecuali Integrasi WooCommerce, Polylang, dan Hyyan WooCommerce Polylang?

Versi dan pengaturan produk apa yang Anda gunakan saat masalah ini terjadi?

  • PHP:
  • WordPress:
  • WooCommerce:
  • Polylang: [sebutkan jika menggunakan Polylang PRO]
  • Integrasi Hyyan WooCommerce Polylang:
  • Peramban:

Langkah-langkah untuk Reproduksi



    1. 1.
  1. 1.

Apa yang saya harapkan

Apa yang Terjadi Sebagai gantinya

Lingkungan WordPress

Copy and paste the system status report from **WooCommerce > System Status** in WordPress admin here.

Komentar yang paling membantu

Saya mengembalikan #518 untuk saat ini. Dan saya akan melihat lebih dalam nanti

Semua 33 komentar

Saya memiliki masalah yang sama, jika saya menyalin dari bahasa utama, saya hanya menampilkan produk sederhana, tanpa kemungkinan untuk menyalin variasi. Bagaimana saya bisa memecahkan masalah ini?

Halo,

Apakah Anda mencoba menginstal plugin "jQuery Migrate Helper"?

Bisakah Anda menggunakan kode dari repositori, unduh zip langsung dari kode unduhan dan instal, saya pikir itu mungkin diselesaikan, saya akan banyak menguji ini minggu depan, tetapi setiap umpan balik diterima.

Bisakah Anda menggunakan kode dari repositori, unduh zip langsung dari kode unduhan dan instal, saya pikir itu mungkin diselesaikan, saya akan banyak menguji ini minggu depan, tetapi setiap umpan balik diterima.

Setelah mengunduh zip dan menginstal dari GitHub, saya memiliki 2 masalah:
1) Jika saya menyalin produk dari bahasa utama ke bahasa sekunder itu menciptakan banyak variasi, (misalnya jika saya memiliki produk dengan 2 warna, bahasa kedua membuat 10 variasi dari warna)
2) Setelah pesanan pelanggan, produk menjadi kehabisan stok meskipun stok masih ada.

1. If I copy a product from the primary language into the secondary it creates many variations, (example if I have a product with 2 colors, the second language creates 10 variations from the color)

Saya mengalami masalah yang sama dengan plugin versi GitHub

Tampaknya PR #518 terbaru telah mengacaukan sesuatu yang terkait dengan produk variabel.

Ok saya membaca topik, sekarang masalahnya adalah kesalahan ejaan dalam atribut meta. Bisakah kita menyelesaikannya dengan kueri pembaruan dan memperbaiki nama di src/Hyyan/WPI/Plugin.php?
@mrleemon saya melihat Anda adalah kolaborator dalam proyek ini, jika Anda memberi saya beberapa panduan tentang kesalahan ini, saya dapat mencoba solusi dan membuatnya tersedia untuk komunitas.

Maaf, saya hanya melakukan beberapa perbaikan untuk kesalahan ketik sejak lama. Pengetahuan saya tentang cara kerja bagian dalam plugin ini mendekati nol.
Saya tidak tahu apa yang harus dilakukan untuk memperbaiki bug variasi ini.

Saat ini, saya pikir satu-satunya yang mengetahui cara kerja plugin ini adalah @ Jon007

Saya memang melihat bahwa #518 menyertakan perbaikan kesalahan ketik yang telah saya tolak pada #450 karena kemungkinan akan merusak situs yang ada, tetapi @hyyan telah menerimanya...

Saya mengembalikan #518 untuk saat ini. Dan saya akan melihat lebih dalam nanti

Terima kasih!

Mungkin plugin harus menggunakan filter resmi Polylang pll_copy_taxonomies untuk menyinkronkan taksonomi WooCommerce (tipe_produk, visibilitas_produk, dan lainnya) alih-alih cara kustom saat ini, yang tampaknya rentan terhadap rilis konstan WooCommerce. Plugin sudah menggunakan filter pll_copy_post_metas Polylang untuk menyalin meta produk, jadi tampaknya masuk akal untuk menggunakan pll_copy_taxonomies untuk menyinkronkan taksonomi produk.

Dengan filter ini, seseorang dapat menentukan taksonomi yang ingin disinkronkan atau disalin dan Polylang menangani sinkronisasi/salinan taksonomi tersebut dan istilah terkaitnya ketika seseorang membuat terjemahan baru.

Hanya sebuah ide.

Saya melihat itu tetapi semua ini menjadi sangat usang, karena woocommerce bergerak lebih ke apinya sendiri dan tabelnya sendiri, Anda tidak dapat mengandalkan memperlakukan produk sebagai pos dan menggunakan apis berbasis pos generik. Paling-paling akan ada bug dengan mekanisme caching woocommerce.

Ya, aku tahu itu. Saya memikirkannya sebagai solusi sementara sementara kami menunggu perubahan api WC.
Sementara itu, saya pikir kita dapat menyelesaikan pemilihan "Produk Sederhana" yang salah ketika produk adalah variabel yang mengubah kode JS di Meta.php menjadi:

Dari:

$code = sprintf(
    '// <![CDATA[ %1$s'
    . ' addLoadEvent(function () { %1$s'
    . '  jQuery("#product-type option")'
    . '     .removeAttr("selected");%1$s'
    . '  jQuery("#product-type option[value=\"%2$s\"]")'
    . '    .attr("selected", "selected");%1$s'
    . '})'
    . '// ]]>', PHP_EOL, $type[0]
);

Ke:

$code = sprintf(
    '// <![CDATA[ %1$s'
    . ' addLoadEvent(function () { %1$s'
    . '  jQuery("#product-type option")'
    . '     .prop("selected", false);%1$s'
    . '  jQuery("#product-type option[value=\"%2$s\"]")'
    . '     .prop("selected", true);%1$s'
    . '})'
    . '// ]]>', PHP_EOL, $type[0]
);

Rupanya, penggunaan attr() dan removeAttr() untuk memilih/membatalkan pilihan opsi tidak digunakan lagi dengan perubahan terbaru jQuery di WP.

Dari https://jquery.com/upgrade-guide/3.0/ :

Breaking change: .removeAttr() no longer sets properties to false

Prior to jQuery 3.0, using .removeAttr() on a boolean attribute such as checked, selected, or readonly would also set the corresponding named property to false. This behavior was required for ancient versions of Internet Explorer but is not correct for modern browsers because the attribute represents the initial value and the property represents the current (dynamic) value.

It is almost always a mistake to use .removeAttr( "checked" ) on a DOM element. The only time it might be useful is if the DOM is later going to be serialized back to an HTML string. In all other cases, .prop( "checked", false ) should be used instead.

Juga, saat ini, ketika pengguna mengklik tautan produk duplikat WC, jenis produk tidak disalin di atas replika.

Saya "memperbaikinya" dengan menambahkan ini ke fungsi unlinkOrginalProductTranslations() di Duplicator.php :

$type = $product->get_type();
update_post_meta($duplicate->get_id(), '_translation_porduct_type', $type);

Saya tidak tahu apakah ada yang salah dengan ini.

Saya ingin menyingkirkan '_translation_porduct_type' sama sekali, seharusnya tidak terlalu diperlukan, itu hanya ada untuk mengatasi kekhasan antarmuka pengguna, namun yang paling sederhana untuk saat ini adalah menyimpannya dan melakukan seperti yang Anda sarankan

Aku akan bertanya padamu tentang ini. Mengapa jenis produk yang diterjemahkan disimpan di _translation_porduct_type ? Tidak bisakah itu diambil dari produk asli secara langsung saat dibutuhkan?

Saya rasa ini rumit karena ketika menerjemahkan polylang adakah yang mencoba memberi Anda detail produk yang diterjemahkan ketika Anda meminta produk lama, setidaknya menyalinnya di metadata lebih mudah

Saya pikir untuk menghilangkan meta _translation_porduct_type , plugin harus menggunakan fungsi WC API WC_Product:save() untuk menyimpan terjemahan alih-alih mengandalkan solusi khusus menggunakan wp_insert_post tindakan secara langsung, tetapi ini berarti memfaktorkan ulang sebagian besar kode yang ditemukan di Meta.php dan saya tidak tahu harus mulai dari mana.

Hai. Sudahkah Anda memecahkan masalah ini?

Hai, saya melakukan beberapa solusi untuk masalah produk Variabel termasuk beberapa penjelasan tentang #430 - akan sangat bagus jika seseorang dapat menguji kode terbaru dan mengonfirmasi masalah apa yang tersisa - idealnya pada masalah github bersih baru, karena ada banyak masalah sebagian atau tiket yang sepenuhnya digandakan dan semakin sulit untuk diikuti.

Terima kasih atas pekerjaan Anda! Saya akan menguji kode terbaru ketika saya mendapat kesempatan dan saya akan memberi tahu Anda jika ada masalah yang muncul.

Saya membuka masalah setelah menguji kode terbaru Anda:
https://github.com/hyyan/woo-poly-integration/issues/526

@hyyan @mrleemon Saya memeriksa beberapa perubahan penting minggu lalu dan memberi label 5.1

Secara khusus saya telah menghapus perbaikan solusi oleh @mrleemon pada #408 dengan mengomentari panggilan meta.php ke:
$this->syncSelectedproductType( $ID );

Sebelumnya kami mengalami masalah ini karena urutan penyimpanan tidak benar setidaknya di 5.0 itu:

  1. WordPress menyimpan posting
  2. posting sinkronisasi woopoly (tetapi WooCommerce belum disimpan sehingga Jenis Produk tidak disimpan dan disinkronkan dengan benar)
  3. WooCommerce menyimpan produk
  4. [untuk produk variabel, WooCommerce menyimpan variasi dan woopoly menyinkronkannya]
  5. Saat melihat terjemahan produk, perbaikan solusi mengatur ulang formulir untuk menunjukkan jenis produk di _translation_porduct_type sehingga pada saat menyimpan terjemahan itu benar

Revisi kode sekarang mengambil kait tepat setelah penyimpanan WooCommerce, dan telah disesuaikan untuk bekerja pada pengeditan cepat (#549) dan pengeditan massal juga sehingga solusi jenis produk tidak lagi diperlukan.

Tentu saja ini bukan akhir dari semuanya - semuanya harus ditinjau ulang untuk hanya menggunakan woo api dan menghindari wp api - tetapi harus menghapus beberapa perilaku aneh.

Besar! Perbaikan solusi itu benar-benar mengerikan.
Jadi, apakah meta _translation_porduct_type salah eja tidak lagi diperlukan?
Saya akan menguji versi yang diperbarui ini ketika saya punya waktu sebentar.

Terima kasih!

Saya telah meninggalkan tugas meta _translation_porduct_type yang salah eja di sana untuk saat ini tetapi tidak digunakan. Jika versi ini berjalan dengan baik, rilis berikutnya dapat menghapus ini dan kode berlebihan lainnya

Saya menguji versi baru ini dan saya menemukan masalah:

  1. Saya memiliki situs dengan tiga bahasa (Spanyol, Inggris, dan Prancis). Bahasa Spanyol adalah default. Opsi sinkronisasi "Jenis produk" di woopoly dicentang.
  2. Saya menambahkan produk baru dalam bahasa Spanyol
  3. Saya memilih "Produk yang dikelompokkan" (atau jenis produk apa pun selain "Produk sederhana") dan simpan.
  4. Dropdown jenis produk menunjukkan jenis produk yang dipilih.
  5. Saya mengeklik tautan "+" mana pun di kotak meta "Bahasa" untuk menambahkan terjemahan.
  6. Dropdown jenis produk dalam terjemahan baru dinonaktifkan (opsi sinkronisasi "Jenis produk" dicentang) tetapi ini menunjukkan "Produk sederhana" alih-alih jenis produk yang dipilih dalam produk bahasa default.

Oke ya saya akan lihat.
Mengubah jenis produk (dan properti lainnya) pada produk yang ada seharusnya tidak masalah.

@mrleemon check in: pada terjemahan baru diperlukan untuk menjaga hook wordpress karena woo hook belum diaktifkan

Ok terima kasih!
Saya akan mengujinya nanti ketika saya punya waktu dan kembali kepada Anda sesegera mungkin.

Saya menguji versi baru ini dan masalah saya dengan terjemahan baru telah diperbaiki.
Terima kasih!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

damiencarbery picture damiencarbery  ·  14Komentar

Jon007 picture Jon007  ·  4Komentar

theblackhole picture theblackhole  ·  4Komentar

dmytro-kindrat picture dmytro-kindrat  ·  14Komentar

vasildervenski picture vasildervenski  ·  19Komentar