رفتن به مطلب

ادرس حمل نقل ووکامرس


پست های پیشنهاد شده

سلام خدمت دوستان

در قسمت ووکامرس وقتی مشتری محصولی خریداری میکنه بار اول فیلد های سفارش رو خالی میاره

ولی یکبار که خرید میکنه سفارشش ثبت میشه

بار دوم میخاد خرید کنه دوباره ادرس قبلی براش میاد وباید بشینه هر فیلد رو دوباره ویرایش کنه و ادرس جدید بده

میخاستم به طوری باشه که هربار توی ثبت سفارش فیلد های ادرس و .... براش خالی بیاد

چجوری میتوتم اینکارو انجام بدم؟

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

درود؛

این کد رو در فایل functions.php قالبتون قرار بدید:

add_filter( 'woocommerce_checkout_get_value', 'masih_clear_shipping_fields_values', 5, 2 );
function masih_clear_shipping_fields_values( $value, $input ) {
    $keys = ['first_name','last_name','company','address_1','address_2','city','postcode','country','state'];
    $key  = str_replace('shipping_', '', $input);
    if( in_array($key, $keys) && is_checkout() ) {
        $value = '';
    }
    return $value;
}

 

  • Thanks 1
لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

بله اضافه کردم دستتون درد نکنه

ولی اون قسمت حمل نقل به یک ادرس متفاوت خالی شد

میخاستم قسمت جزئیات صورت حساب یا صورت حساب حمل نقل خالی بشه

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

کدی که دادم تمامی فیلدهای صفحه سفارش رو برای کاربر پاکسازی میکنه و مانع لود شدن مقادیر تکمیل شده از قبل توسط کاربر میشه. حالا این وسط ممکنه افزونه یا کدی در قالبتون وجود داشته باشه که با کارایی کدی که من دادم تداخل ایجاد کنه و مانع این پاکسازی بشه.

این کد رو هم پایین همون کد قبلی استفاده کنید تا اولویت کدهای حذف اطلاعات رو افزایش بدید:

add_filter('woocommerce_checkout_get_value','__return_empty_string',10);

 

یا بجای اون کد قبلی می تونید از این کد هم استفاده کنید:

add_filter('woocommerce_checkout_fields', 'default_values_checkout_fields');
function default_values_checkout_fields($fields) {
  if (!is_user_logged_in()) {
      unset($fields['billing_city']);
      unset($fields['billing_first_name']);
      unset($fields['billing_last_name']);
      unset($fields['billing_company']);
      unset($fields['billing_address_1']);
      unset($fields['billing_address_2']);
      unset($fields['billing_city']);
      unset($fields['billing_postcode']);
      unset($fields['billing_country']);
      unset($fields['billing_state']);
      unset($fields['billing_email']);
      unset($fields['billing_phone']);
      unset($fields['shipping_city']);
      unset($fields['shipping_first_name']);
      unset($fields['shipping_last_name']);
      unset($fields['shipping_company']);
      unset($fields['shipping_address_1']);
      unset($fields['shipping_address_2']);
      unset($fields['shipping_postcode']);
      unset($fields['shipping_country']);
      unset($fields['shipping_state']);
      return $fields;
  }
}

توی کد بالا هر فیلد بطور مشخص لیست شده که این فیلدها مقادیر پیش فرض نخواهند داشت. اگه قصد دارید هر فیلد از مقادیر قبلی کاربر استفاده کنه، خط مربوط به اون فیلد رو حذف کنید

  • Thanks 1
لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

کد اولی که دادید رو به کد قبلی اضافه کردم همه چی درست شد فیلدها خالی شدن اما قسمت حمل نقل از کار افتاد بعد از وارد کردن ادرس هم میزنه هیچ گزینه ارسالی در دسترس نیست

کد دومی که دادید توی تایپیک اخری اونو هم استفاده کردم اما کلا فیلد هارو حذف کرد

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

برای کد اول باید قالب رو دیباگ کنید، کدی توی قالب وجود داره که مانع از عملکرد صحیح اون کد میشه.

راه بعدی جی کوئری هست به این صورت که تمامی فیلدها رو موقع لود صفحه پاک کنیم!

این کد رو هم توی functions.php قالب قرار بدید بجای کدهای قبلی

function masih_print_script() { 
    if (is_page(12345)) { ?>
        <script type="text/javascript">
            ( function( $ ) {
                $('form').each(function() { this.reset() });
            }( jQuery ) );
        </script>
    <?php }
}
add_action( 'wp_footer', 'masih_print_script' );

بجای 12345 هم آی دی صفحه تسویه حساب رو وارد کنید تا جی کوئری فقط توی اون برگه اجرا بشه. اگر نیاز شد باید کد رو خودتون توسعه بدید تا با قالبتون سازگار بشه

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

add_filter( 'woocommerce_checkout_get_value', 'bks_remove_values', 10, 2 );
function bks_remove_values( $value, $input ) {
   $item_to_set_null = array(
           'billing_first_name',
           'billing_last_name',
           'billing_company',
           'billing_address_1',
           'billing_address_2',
           'billing_postcode',
           'billing_email',
           'billing_phone',
           'billing_number',
           'shipping_first_name',
           'shipping_last_name',
           'shipping_company',
           'shipping_address_1',
           'shipping_address_2',
           'shipping_postcode',
           'shipping_number',
       ); // All the fields in this array will be set as empty string, add or remove as required.
   if (in_array($input, $item_to_set_null)) {
       $value = '';
   }
   return $value;
}

من کد هارو به این شکل ویرایش کردم به ته فایل فانکشن اضافه کردم

همه فیلدهارو به غیر از استان و شهر رو خالی میکنه و هزینه ارسال رو محاسبه میکنه

لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
×
×
  • اضافه کردن...