WooCommerce: Maxlength و Minlength لحقول الخروج

A VPN is an essential component of IT security, whether you’re just starting a business or are already up and running. Most business interactions and transactions happen online and VPN

إذا كنت معتادًا على استخدام HTML ، فيمكنك إضافة سمات ” maxlength ” و ” minlength ” إلى حقل الإدخال لفرض أن تكون قيمته min X و y max حرفًا طويلاً. كل هذا جيد وسهل ، لذلك قد نرى أيضًا ما يحدث على صفحة WooCommerce Checkout بمجرد تطبيق هذه السمات على حقل مخصص معين.

تنبيه المفسد: maxlength يعمل ، بينما minlength لا يعمل. ومن ثم ، فإن فرض حد أدنى للطول في حقل معين أمر مستحيل تمامًا ، ما لم نتحقق من صحة البيانات المنشورة (قيمة إدخال الحقل ليست طويلة بما يكفي) بمجرد إرسال السحب. هذه مشكلة ، وسأشرح في هذه المقالة أيضًا كيفية الاتصال بـ WooCommerce حتى يتمكنوا من تحسين الوظيفة / إصلاح الخلل.

يتمتع!

إليك ما يحدث في صفحة WooCommerce Checkout بعد تطبيق “Snippet 1” أدناه: يبلغ الحد الأقصى لطول حقل إدخال الشركة 15 حرفًا ومن المستحيل إدخال أكثر من ذلك.

مقتطف PHP 1: تعيين حقل الخروج “Maxlength”

في المثال أدناه ، أجبر حقل “اسم الشركة” على ألا يزيد عدد الأحرف عن 15 حرفًا.

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

/**
 * @snippet       Maxlength @ WooCommerce Checkout Field
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 4.5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_filter( 'woocommerce_checkout_fields', 'bbloomer_checkout_fields_custom_attributes', 9999 );
 
function bbloomer_checkout_fields_custom_attributes( $fields ) {
   $fields['billing']['billing_company']['maxlength'] = 15;
   return $fields;
}

مقتطف PHP 2: تعيين حقل الخروج “Minlength”

هنا يأتي الجانب الآخر من الميدالية. لا يمكن فرض حد أدنى للطول على حقل الإعارة. إليك كل الأشياء التي جربتها (وفشلت بشكل صارخ) ، باستخدام نفس PHP بالضبط في Snippet 1 أعلاه.

هذه المحاولة الأولى لا تعمل على الإطلاق:

/**
 * @snippet       NOT WORKING: Minlength @ WooCommerce Checkout Field
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 4.5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_filter( 'woocommerce_checkout_fields', 'bbloomer_checkout_fields_custom_attributes', 9999 );
 
function bbloomer_checkout_fields_custom_attributes( $fields ) {
   $fields['billing']['billing_company']['minlength'] = 15;
   return $fields;
}

تضيف هذه المحاولة الثانية سمة “minlength” بشكل صحيح إلى إدخال حقل الشركة ، ولكن لا شيء يحدث في نهاية التحقق من الصحة ، أي يمكنك إرسال طلب الخروج ولن يتم إرجاع أي خطأ:

/**
 * @snippet       NOT WORKING: Minlength @ WooCommerce Checkout Field
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 4.5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_filter( 'woocommerce_checkout_fields', 'bbloomer_checkout_fields_custom_attributes', 9999 );
 
function bbloomer_checkout_fields_custom_attributes( $fields ) {
   $fields['billing']['billing_company']['custom_attributes']['minlength'] = 15;
   return $fields;
}

بشكل أساسي ، لن يقوم الحقل بالتحقق من minlength حتى إذا كانت سمة minlength موجودة:

على الرغم من احتواء حقل الشركة على سمة minlength ، فلن تتوقف عملية السداد عند الإرسال

المحاولة الثالثة هي حل بديل آخر نظرًا لأن minlength لا يعمل. حاولت إضافة سمة ” pattern ” بدلاً من ذلك ، والتي تحقق نفس الشيء (15 حرفًا على الأقل):

/**
 * @snippet       NOT WORKING: Minlength @ WooCommerce Checkout Field
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 4.5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_filter( 'woocommerce_checkout_fields', 'bbloomer_checkout_fields_custom_attributes', 9999 );
 
function bbloomer_checkout_fields_custom_attributes( $fields ) {
   $fields['billing']['billing_company']['custom_attributes']['pattern'] = '.{15,}';
   return $fields;
}

حسنًا ، لا شيء يعمل ولا يزال تسجيل الخروج يرسل على الرغم من وجود خطأ في إدخال الحقل. لذلك، بغض النظر عن ما نقوم به، حتى لو وضعناها MINLENGTH السمة WooCommerce لا التحقق من صحة قيمة المدخلات المجال الخروج . الخيار الوحيد الذي لدينا هو إيقاف عملية السداد ما لم يكن حقل الإدخال يحتوي على 15 حرفًا أو أكثر. لقد حققت ذلك بهذه الطريقة:

/**
 * @snippet       WORKING: Minlength Validation @ WooCommerce Checkout Field
 * @how-to        Get CustomizeWoo.com FREE
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 4.5
 * @donate $9     https://businessbloomer.com/bloomer-armada/
 */
 
add_action( 'woocommerce_checkout_process', 'bbloomer_checkout_fields_custom_validation' );
   
function bbloomer_checkout_fields_custom_validation() { 
   if ( isset( $_POST['billing_company'] ) && ! empty( $_POST['billing_company'] ) ) {
      if ( strlen( $_POST['billing_company'] ) < 15 ) {
         wc_add_notice( 'Company name requires at least 15 characters', 'error' );
      }
   }   
}

وهذا ما يحدث بمجرد أن أدخل اسم شركة أقل من 15 حرفًا وأرسل عملية الدفع:

تتوقف عملية السحب لأن “اسم الشركة” لا يحتوي على أحرف كافية (15).

هذا رائع ويعمل ، ولكن إذا كان WooCommerce قادرًا على التعامل مع minlength بدلاً من ذلك ، فلن تكون هناك مشاكل على الإطلاق ولن أحتاج إلى التوصل إلى حل بديل مخصص للتحقق من الصحة لإيقاف عملية الدفع.

مؤسف، لأن WooCommerce “يقرأ” MAXLENGTH ، لذلك أنا لا أرى لماذا لا ينبغي أن تفعل الشيء نفسه مع MINLENGTH و نمط . لذا ، سأوضح لك اليوم كيفية السماح لـ WooCommerce بمعرفة أن هناك خطأ / تحسين في الوظائف يستحق لفت انتباه المطورين.

من أجل القيام بذلك ، انتقل إلى https://github.com/woocommerce/woocommerce/issues وقم بإجراء بحث سريع لمعرفة ما إذا كانت أي من المشكلات المفتوحة تحتوي على كلمة “minlength”:

الآن بعد أن علمت أنه لا توجد مشكلة مكررة ، يمكنني إنشاء “مشكلة جديدة” (الزر الأخضر) ، وإدخال عنوان ووصف جيد: https://github.com/woocommerce/woocommerce/issues/27803

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

يمكنك متابعة فتح مطوري WooCommerce ومناقشتها وإغلاقها على نفس الرابط.

امل ان يساعد هذا احد.

المنشورات ذات الصلة:

WooCommerce: كيفية إضافة حقل مخصص للخروج

WooCommerce: أضف حقل رقم المنزل @ Checkout

WooCommerce: تعيين مدينة الفوترة الافتراضية (أو حقول أخرى) @ Checkout

دليل تخصيص حقول WooCommerce Checkout

WooCommerce: أضف حقل “تأكيد عنوان البريد الإلكتروني” @ Checkout

WooCommerce: تحويل حقل الخروج من العنوان إلى القائمة المنسدلة

WooCommerce: إخفاء حقول فواتير تسجيل الخروج إذا كان Virtual Product @ Cart

WooCommerce: عرض أخطاء الحقول المطلوبة “Inline” @ Checkout

WooCommerce: أعد تسمية تسمية “الولاية” @ Checkout

WooCommerce: نقل ملاحظات الطلب @ الخروج

أين تضيف هذا المقتطف؟

يمكنك وضع مقتطفات PHP في الجزء السفلي من ملف function.php القالب الفرعي الخاص بك (احذف “؟>” إذا كان لديك هناك). من ناحية أخرى ، ينتقل CSS في ملف style.css الخاص بسمة الطفل. تأكد من أنك تعرف ما تفعله عند تحرير مثل هذه الملفات – إذا كنت بحاجة إلى مزيد من الإرشادات ، فيرجى إلقاء نظرة على الفيديو التعليمي المجاني الخاص بي “أين تضع تخصيص WooCommerce؟”

هل هذا المقتطف (لا يزال) يعمل؟

يرجى إعلامي في التعليقات إذا كان كل شيء يعمل كما هو متوقع. يسعدني مراجعة المقتطف إذا أبلغت بخلاف ذلك (يرجى تقديم لقطات شاشة). لقد اختبرت هذا الكود مع موضوع Storefront وإصدار WooCommerce المذكور أعلاه واستضافة صديقة لـ وورد بريس على PHP 7.3.

إذا كنت تعتقد أن هذا الرمز وفر لك الوقت والمال ، فلا تتردد في الانضمام إلى أكثر من 14000 مشترك في WooCommerce Weekly للحصول على تحديثات منشورات المدونة أو أكثر من 250 من مؤيدي Business Bloomer لمدة 365 يومًا من مزايا WooCommerce . شكرا لكم مقدما 🙂

هل تحتاج إلى مساعدة في WooCommerce؟

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

توضيح

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

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

شاركنا رايك وتقييمك للموضوع

{{ reviewsTotal }}{{ options.labels.singularReviewCountLabel }}
{{ reviewsTotal }}{{ options.labels.pluralReviewCountLabel }}
{{ options.labels.newReviewButton }}
{{ userData.canReview.message }}