WooCommerce: الشحن فقط إلى عناوين “الاستلام المحلية” المحددة مسبقًا

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

قدم Woo 2.6 مناطق الشحن – وبهذا يمكننا اللعب باستخدام PHP (و JQuery) البسيطة لإنجاز الكثير من قواعد الشحن “المتقدمة” ، مثل الاستلام المحلي.

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

1. لاقط محلي متقدم – إعداد مناطق / طرق الشحن

أول شيء عليك القيام به هو إعداد مناطق الشحن WooCommerce. في هذه الحالة ، ستتوافق كل منطقة مع عنوان الاستلام المحلي (على سبيل المثال ، متجر رقم 1 ، متجر رقم 2 ، إلخ).

في المثال التالي ، أضفت “منطقتين / متاجر” في أستراليا ، الولاية = “إقليم العاصمة الأسترالية” ورمزين بريديين محددين.

كل منطقة لها طريقة شحن فريدة (التقاط محلي) بتكلفة = 0 دولار:

لاقط محلي متقدم – مناطق شحن WooCommerce

2. انتقاء محلي متقدم – مقتطف PHP / JQuery

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

/**
 * @snippet       Advanced Local Pickup - WooCommerce
 * @how-to        Get CustomizeWoo.com FREE
 * @source        https://businessbloomer.com/?p=21534
 * @author        Rodolfo Melogli
 * @compatible    WC 3.4.2
 */
 
//////////////////////////////////////////////////////////
// 1. New select field @ billing section
 
add_filter( 'woocommerce_checkout_fields' , 'bbloomer_display_pickup_locations' );
 
function bbloomer_display_pickup_locations( $fields ) {
 
$fields['billing']['pick_up_locations'] = array(
      'type'     => 'select',
   'options'  => array(
        'option_1' => 'Select...',
   'option_2' => 'Melbourne Road Shop',
        'option_3' => 'Perth Road Shop'),
   'label'     => __('Pick Up Location', 'woocommerce'),
   'class'     => array('form-row-wide'),
       'clear'     => true
     );
 
return $fields;
 
}
 
//////////////////////////////////////////////////////////
// 2. Field to show only when country == Australia
 
add_action( 'woocommerce_after_checkout_form', 'bbloomer_conditionally_hide_show_pickup', 5);
 
function bbloomer_conditionally_hide_show_pickup() {
   
  ?>
   <script type="text/javascript">
      jQuery('select#billing_country').live('change', function(){
          
         var country = jQuery('select#billing_country').val();
          
         var check_country = new Array(<?php echo '"AU"'; ?>);
         if (country && jQuery.inArray( country, check_country ) >= 0) {
            jQuery('#pick_up_locations_field').fadeIn();
         } else {
            jQuery('#pick_up_locations_field').fadeOut();
            jQuery('#pick_up_locations_field input').val('');
         }
          
      });
   </script>
   <?php
      
}
 
//////////////////////////////////////////////////////////
// 3. "Ship to a different address" opened by default
 
add_filter( 'woocommerce_ship_to_different_address_checked', '__return_true' );
 
//////////////////////////////////////////////////////////
// 4. Change shipping address when local pickup location changes
 
add_action( 'woocommerce_after_checkout_form', 'bbloomer_checkout_update_pickup_address', 10);
 
function bbloomer_checkout_update_pickup_address() {
         
        ?>
      <script type="text/javascript">
 
      jQuery('select#pick_up_locations').live('change', function(){
 
      var location = jQuery('select#pick_up_locations').val();
       
      if (location == 'option_2') {
       
      jQuery('select#shipping_country').val('AU').change();
      jQuery('select#shipping_state').val('ACT').change();
      jQuery('#shipping_city_field input').val('Sidney');
      jQuery('#shipping_address_1_field input').val('Melbourne Road');
      jQuery('#shipping_postcode_field input').val('34500');
      jQuery(".shipping_address input[id^='shipping_']").prop("disabled", true);
      jQuery(".shipping_address select[id^='shipping_']").prop("disabled", true);
       
      } else if (location == 'option_3') {
 
      jQuery('select#shipping_country').val('AU').change();
      jQuery('select#shipping_state').val('ACT').change();
      jQuery('#shipping_city_field input').val('Sidney');
      jQuery('#shipping_address_1_field input').val('Perth Road');
      jQuery('#shipping_postcode_field input').val('79200');
      jQuery(".shipping_address input[id^='shipping_']").prop("disabled", true);
      jQuery(".shipping_address select[id^='shipping_']").prop("disabled", true);
 
                } else {
 
      jQuery(".shipping_address input[id^='shipping_']").prop("disabled", false);
      jQuery(".shipping_address select[id^='shipping_']").prop("disabled", false);
 
      }
       
      });
 
      </script>
      <?php
                      
}

نتيجة لذلك ، بمجرد تحديد عنوان الاستلام المحلي الصحيح من قسم الفواتير ، يجب أن تحصل تلقائيًا على طريقة الشحن الصحيحة في الخروج:

لاقط محلي متقدم – WooCommerce Checkout

هل اختبرت هذا؟ هل لديك أي شيء مفيد تضيفه؟ دعني اعرف!

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

WooCommerce: إخفاء أسعار الشحن في حالة توفر الشحن المجاني

WooCommerce: قصر الشحن على دولة واحدة فقط

WooCommerce: أضف إشعارات الشحن على صفحة الخروج

WooCommerce: إزالة ملصقات الشحن في السلة (مثل “السعر الثابت”)

WooCommerce: تم فتح “الشحن إلى عنوان مختلف” افتراضيًا

WooCommerce: قم بفرز تكاليف الشحن من الأقل إلى الأعلى

WooCommerce: عدم السماح بالشحن إلى عنوان صندوق البريد

WooCommerce: إخفاء سعر الشحن إذا كانت فئة الشحن @ سلة التسوق

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

WooCommerce: أضف هاتف الشحن @ Checkout

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

يمكنك وضع مقتطفات 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 }}