Woo-poly-integration: مشاكل المنتجات المتغيرة

تم إنشاؤها على ٤ نوفمبر ٢٠٢٠  ·  33تعليقات  ·  مصدر: hyyan/woo-poly-integration

مرحبا،

لدينا مشاكل في تحرير المنتجات المتغيرة بعد آخر تحديث لـ woocommerce.

تشير بيانات المنتج إلى "منتج بسيط" ولكن المنتج متغير.

هل يمكنك إعادة إنتاج هذه المشكلة على سمة Wordpress الافتراضية (مثل واجهة المتجر)؟

هل يمكنك إعادة إظهار هذه المشكلة عند تعطيل جميع المكونات الإضافية الأخرى باستثناء WooCommerce و Polylang و Hyyan WooCommerce Polylang Integration؟

ما إصدارات المنتج والإعدادات التي تستخدمها عند حدوث هذه المشكلة؟

  • بي أتش بي:
  • ووردبريس:
  • WooCommerce:
  • Polylang: [أذكر إذا كنت تستخدم Polylang PRO]
  • تكامل Hyyan WooCommerce Polylang:
  • المستعرض:

خطوات التكاثر



    1. 1.
  1. 1.

ما توقعت

ماذا حدث بدلا من ذلك

بيئة WordPress

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

التعليق الأكثر فائدة

لقد عدت إلى رقم 518 الآن. وسألقي نظرة أعمق لاحقًا

ال 33 كومينتر

لدي نفس المشكلة ، إذا قمت بالنسخ من اللغات الأساسية ، فأنا أعرض المنتجات البسيطة فقط ، دون إمكانية نسخ الاختلاف. كيف يمكنني حل هذا؟

مرحبا،

هل حاولت تثبيت البرنامج المساعد "jQuery Migrate Helper"؟

هل يمكنك استخدام الرمز من المستودع وتنزيل الرمز المضغوط مباشرةً من رمز التنزيل والتثبيت ، وأعتقد أنه قد يتم حله ، وسأختبر هذا كثيرًا الأسبوع المقبل ، ولكن كل تعليق مرحب به.

هل يمكنك استخدام الرمز من المستودع وتنزيل الرمز المضغوط مباشرةً من رمز التنزيل والتثبيت ، وأعتقد أنه قد يتم حله ، وسأختبر هذا كثيرًا الأسبوع المقبل ، ولكن كل تعليق مرحب به.

بعد تنزيل zip والتثبيت من GitHub ، لدي مشكلتان:
1) إذا قمت بنسخ منتج من اللغة الأساسية إلى اللغة الثانوية ، فسيؤدي ذلك إلى إنشاء العديد من الاختلافات ، (على سبيل المثال ، إذا كان لدي منتج بلونين ، فإن اللغة الثانية تخلق 10 أشكال مختلفة من اللون)
2) بعد طلب العميل ، يصبح المنتج غير متوفر حتى لو كان لا يزال هناك مخزون.

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)

أواجه نفس المشكلة مع إصدار GitHub من المكون الإضافي

يبدو أن أحدث إصدار من PR # 518 قد أفسد شيئًا متعلقًا بالمنتجات المتغيرة.

حسنًا ، لقد قرأت الموضوع ، والآن المشكلة تكمن في وجود خطأ إملائي في سمة التعريف. هل يمكننا حلها باستعلام تحديث وإصلاح الاسم في src / Hyyan / WPI / Plugin.php؟
mrleemon لقد رأيت أنك متعاون في هذا المشروع ، إذا أعطيتني بعض الإرشادات حول هذا الخطأ ، يمكنني تجربة حل وإتاحته للمجتمع.

عذرًا ، لقد ارتكبت بعض الإصلاحات للأخطاء المطبعية منذ وقت طويل. معرفتي بالأعمال الداخلية لهذا البرنامج المساعد قريبة من الصفر.
لا أعرف ما يجب القيام به لإصلاح هذا الخطأ في الاختلافات.

في الوقت الحالي ، أعتقد أن الشخص الوحيد الذي يعرف كيفية عمل هذا المكون الإضافي هو @ Jon007

لقد رأيت أن الرقم # 518 يتضمن هذا الإصلاح المطبعي الذي رفضته بالفعل في # 450 لأنه من المحتمل أن يكسر المواقع الحالية ، لكن hyyan قبلها ...

لقد عدت إلى رقم 518 الآن. وسألقي نظرة أعمق لاحقًا

شكرا!

ربما يجب أن يستخدم المكون الإضافي مرشح Polylang pll_copy_taxonomies الرسمي لمزامنة تصنيفات WooCommerce (نوع_المنتج و product_visibility وغيرها) بدلاً من الطريقة المخصصة الحالية ، والتي تبدو عرضة لإصدارات WooCommerce الثابتة. يستخدم المكون الإضافي بالفعل مرشح Polylang pll_copy_post_metas لنسخ التعريف للمنتج ، لذلك يبدو من المعقول استخدام pll_copy_taxonomies لمزامنة تصنيفات المنتج.

باستخدام هذا الفلتر ، يمكن للمرء تحديد التصنيفات التي يريد المرء مزامنتها أو نسخها ، ويتولى Polylang مزامنة / نسخة التصنيفات المذكورة والمصطلحات ذات الصلة عندما يقوم المرء بإنشاء ترجمة جديدة.

مجرد فكرة.

لقد نظرت إلى ذلك ولكن كل هذه الأمور أصبحت عفا عليها الزمن بشكل خطير ، حيث تتحرك woocommerce أكثر نحو واجهة برمجة التطبيقات الخاصة بها وجداولها الخاصة ، ولا يمكنك الاعتماد على معالجة المنتجات كمنشور واستخدام واجهات برمجة تطبيقات عامة قائمة على المنشور. في أفضل الأحوال ، ستكون هناك أخطاء في آلية التخزين المؤقت لـ woocommerce.

نعم اعرف ذلك. كنت أفكر في الأمر كحل مؤقت بينما ننتظر تغييرات WC api.
في غضون ذلك ، أعتقد أنه يمكننا حل التحديد غير الصحيح لـ "Simple Product" عندما يكون المنتج متغيرًا بتغيير كود JS في Meta.php إلى:

من:

$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]
);

ل:

$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]
);

من الواضح أن استخدام attr() و removeAttr() لاختيار / إلغاء تحديد الخيارات قد تم إهماله مع التغييرات الأخيرة لـ jQuery في WP.

من 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.

أيضًا ، في الوقت الحالي ، عندما ينقر المستخدم فوق ارتباط منتج مكرر WC ، لا يتم نسخ نوع المنتج فوق النسخة المتماثلة.

لقد أصلحتها عن طريق إضافة هذا إلى الوظيفة unlinkOrginalProductTranslations() في Duplicator.php :

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

لا أعرف ما إذا كان هناك أي خطأ في هذا.

أرغب في التخلص من "_translation_porduct_type" تمامًا ، لا ينبغي أن يكون ضروريًا حقًا ، إنه موجود فقط للتعامل مع غرابة واجهة المستخدم ، ولكن أبسط في الوقت الحالي هو الاحتفاظ بها والقيام بما تقترحه

كنت سوف أسألك عن هذا. لماذا يتم تخزين نوع المنتج المترجم في _translation_porduct_type ؟ ألا يمكن استرجاعها من المنتج الأصلي مباشرة عند الحاجة؟

أعتقد أن الأمر معقد لأنه عند ترجمة polylang ، هناك محاولة لإعطائك تفاصيل المنتج المترجمة عندما تطلب المنتج القديم ، على الأقل ، يكون نسخه في البيانات الوصفية أسهل

أعتقد أنه من أجل التخلص من _translation_porduct_type meta ، يجب أن يستخدم المكون الإضافي وظيفة WC API WC_Product:save() لتخزين الترجمات بدلاً من الاعتماد في حل مخصص باستخدام wp_insert_post مباشرة ، ولكن هذا يعني إعادة هيكلة جزء كبير من الكود الموجود في Meta.php ولا أعرف من أين أبدأ.

مرحبا. هل حلت هذه المشكلة؟

مرحبًا ، لقد التزمت ببعض الحلول لقضايا المنتجات المتغيرة بما في ذلك بعض الشرح حول # 430 - سيكون من الرائع أن يتمكن شخص ما من اختبار أحدث رمز وتأكيد المشكلات المتبقية - بشكل مثالي في مشكلة github النظيفة الجديدة ، حيث كان هناك العديد منها جزئيًا أو تذاكر مكررة بالكامل ويصعب متابعتها.

شكرا لعملكم! سأختبر أحدث رمز عندما تسنح لي الفرصة وسأخبرك إذا ظهرت أي مشاكل.

لقد فتحت مشكلة بعد اختبار أحدث رمز لك:
https://github.com/hyyan/woo-poly-integration/issues/526

mrleemonhyyan راجعت بعض التغييرات الهامة في الأسبوع الماضي وصفت 5.1

على وجه الخصوص ، قمت بإزالة الإصلاح البديل بواسطة mrleemon على # 408 من خلال التعليق على استدعاء meta.php إلى:
$ this-> syncSelectedproductType ($ ID) ؛

في السابق كانت لدينا هذه المشكلة لأن تسلسل الحفظ لم يكن صحيحًا على الأقل في 5.0 كان:

  1. WordPress يحفظ المنشور
  2. نشر مزامنة woopoly (ولكن لم يتم حفظ WooCommerce حتى الآن ، لذا لم يتم حفظ نوع المنتج ومزامنته بشكل صحيح)
  3. يحفظ WooCommerce المنتج
  4. [بالنسبة للمنتج المتغير ، يحفظ WooCommerce الاختلافات ويقوم woopoly بمزامنتها]
  5. عند عرض ترجمة المنتج ، يقوم الإصلاح البديل بإعادة تعيين النموذج لإظهار نوع المنتج في _translation_porduct_type بحيث يكون عند حفظ الترجمة صحيحًا

تلتقط تنقيحات الكود الآن الخطافات بعد حفظ WooCommerce مباشرةً ، وقد تم تعديلها للعمل على التحرير السريع (# 549) والتحرير الجماعي أيضًا بحيث لم تعد هناك حاجة إلى حلول لنوع المنتج.

بالطبع هذه ليست نهاية الأمر - يجب إعادة مراجعة الأمر برمته لاستخدام woo api فقط وتجنب wp api - ولكن يجب إزالة بعض السلوكيات الغريبة.

باهر! كان هذا الإصلاح البديل فظيعًا حقًا.
إذن ، هل لم تعد meta _translation_porduct_type بها أخطاء إملائية ضرورية أيضًا؟
سأختبر هذا الإصدار المحدث عندما يكون لدي دقيقة.

شكرا!

لقد تركت تعيين تعريف _translation_porduct_type الذي به أخطاء إملائية هناك في الوقت الحالي ولكنه لم يتم استخدامه. إذا سارت هذه النسخة على ما يرام ، فقد يزيل الإصدار اللاحق هذا الرمز وغيره من التعليمات البرمجية الزائدة

لقد اختبرت هذا الإصدار الجديد ووجدت مشكلة:

  1. لدي موقع بثلاث لغات (الإسبانية والإنجليزية والفرنسية). الاسبانية هي الافتراضي. يتم تحديد خيار المزامنة "نوع المنتج" في woopoly.
  2. أقوم بإضافة منتج جديد باللغة الإسبانية
  3. أحدد "منتج مجمع" (أو أي نوع منتج بخلاف "منتج بسيط") ثم احفظ.
  4. تعرض القائمة المنسدلة لنوع المنتج نوع المنتج المحدد.
  5. أنقر على أي رابط "+" في مربع تعريف "اللغات" لإضافة ترجمة.
  6. تم تعطيل القائمة المنسدلة لنوع المنتج في الترجمة الجديدة (تم تحديد خيار المزامنة "نوع المنتج") ولكنها تعرض "منتج بسيط" بدلاً من نوع المنتج المحدد في منتج اللغة الافتراضية.

طيب نعم سألقي نظرة.
يجب أن يكون تغيير أنواع المنتجات (وأي خاصية أخرى) على المنتجات الحالية أمرًا جيدًا.

mrleemon سجل الوصول: في الترجمات الجديدة اللازمة للحفاظ على ربط

حسنا، شكرا!
سأختبرها لاحقًا عندما يكون لديّ لحظة وأعود إليك في أقرب وقت ممكن.

لقد اختبرت هذا الإصدار الجديد وتم إصلاح مشكلتي مع الترجمات الجديدة.
شكرا!

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

hyyan picture hyyan  ·  13تعليقات

Tii picture Tii  ·  27تعليقات

Magneticdud picture Magneticdud  ·  5تعليقات

mrleemon picture mrleemon  ·  4تعليقات

vasildervenski picture vasildervenski  ·  19تعليقات