ویرایش فرم تسویه حساب ووکامرس و حذف فیلدهای اضافی صفحه پرداخت

در این مقاله بطور کامل باهم می‌آموزیم که چگونه می‌توانیم با و بدون افزونه کلیه فیلدهای فرم تسویه حساب صفحه پرداخت ووکامرس را ویرایش کنیم. می‌آموزیم که چگونه فیلدهای اضافی و دلخواه را پاک کنیم تا یک صفحه پرداخت تر و تمیز و عالی با کمترین تعداد فیلد ممکن داشته باشیم تا مشتری و کاربر سریعا بتواند آنها را پر کند و روند خرید خود را به پایان برساند. با بهترین افزونه ویرایشگر فرم تسویه حساب آشنا می‌شوید و کلیه کدهای PHP لازم برای ویرایش و حذف فیلدهای دلخواه صفحه پرداخت ووکامرس را خواهید آموخت.
ویرایش فرم تسویه حساب ووکامرس و حذف فیلدهای اضافی صفحه پرداخت
( امتیاز 4.8 از 5 رای )

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

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

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

برای حذف فیلدهای اضافی و دلخواه صفحه تسویه حساب ووکامرس 2 راه وجود دارد:

  • با استفاده از افزونه
  • با استفاده از کد PHP

در این مقاله می‌آموزیم که چطور به هر دو روش بتوانیم فرم پرداخت صفحه Checkout ووکامرس را ویرایش کنیم.

ویرایش فرم تسویه حساب ووکامرس با افزونه

افزونه‌های رایگان زیادی در مخزن وردپرس برای ویرایش و حذف فیلدهای صفحه پرداخت ووکامرس وجود دارند:

شخصا تمامی افزونه‌های رایگان و پولی که کار ویرایش فرم تسویه حساب صفحه پرداخت ووکامرس را انجام می‌دهند را تست و استفاده کردم. بهترین افزونه ویرایشگر فرم پرداخت ووکامرس Checkout Field Editor for WooCommerce است.

بهترین افزونه ویرایشگر فرم تسویه حساب صفحه پرداخت ووکامرس

افزونه Checkout Field Editor for WooCommerce

افزونه Checkout Field Editor for WooCommerce بهترین افزونه ویرایش فیلدهای فرم پرداخت صفحه تسویه حساب ووکامرس است. این افزونه بشدت قدرتمند، فوق العاده سبک و سریع است و از کدنویسی بسیار تمیزی برخوردار است. این افزونه در قیاس با افزونه‌های رقیب خود کمترین میزان رم را مصرف می‌کند و کمترین تاثیر را بر سرعت سایت وردپرسی شما دارد.

عملکرد و میزان مصرف رم افزونه Checkout Field Editor for WooCommerce

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

برای نصب این افزونه روی سایت وردپرسی خود عبارت Checkout Field Editor for WooCommerce را در قسمت جستجوی بخش افزونه‌ها > افزودن سرچ کنید و پس از یافتن، آن را نصب و فعال کنید.

نصب و فعالسازی افزونه Checkout Field Editor for WooCommerce از پیشخوان یا مخزن وردپرس

برای دستیابی به تنظیمات افزونه، در محیط پیشخوان وردپرس از زیر مجموعه منو ووکامرس گزینه فرم پرداخت را انتخاب کنید.

تنظیمات افزونه Checkout Field Editor for WooCommerce

فرم تسویه حساب صفحه پرداخت ووکامرس

پس از انتخاب محصول (محصولات) و افزودن آنها به سبد خرید و گذر از صفحه سبد خرید توسط مشتریان و کاربران، آنها در قدم نهایی به صفحه checkout یا پرداخت و یا تسویه حساب ووکامرس هدایت می‌شوند که بصورت کلی دارای آدرس https://yoursiteDomain.com/checkout و ظاهر کلی بصورت زیر است:

صفحه پرداخت یا تسویه حساب ووکامرس

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

در قسمت فیلدهای صورتحساب (Billing Fields) شما می‌توانید کلیه فیلدهای فرم صورت‌حساب صفحه پرداخت ووکامرس را ویرایش، حذف یا اضافه نمایید.

برای ویرایش یا حذف هر کدام از فیلدهای موجود شما کافی است که دکمه ویرایش جلوی هر کدام از فیلدها را بزنید و مقادیر برچسب (Label)، نگهدارنده (Placeholder)، کلاس فیلد (Class)، اعتبارسنجی (Validation) و ضروری بودن یا نبودن آن را تغییر دهید و یا آن را فعال یا غیرفعال (حذف) کنید.

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

برچسب (Label) متن بالای هر فیلد است که مشخص می‌کند این در این فیلد کاربر باید چه مشخصات و مقادیری را وارد کند. نگهدارنده (Placeholder) متن کمرنگ داخل بدنه هر فیلد است که هنگامی که هیچ متن و مقداری داخل فیلد نباید کاربر را راهنمایی میکند که دقیقا چه چیزی و به چه صورتی باید در هر فیلد وارد شود.

کلاس فیلد (Class) مشخص کننده اندازه یا عرض یا پهنای هر فیلد است که دارای 3 مقدار form-row-first (نیم عرض ابتدایی)، form-row-last (نیم عرض انتهایی) و form-row-wide (فیلد تمام عرض) می‌باشد.

اعتبارسنجی (Validation) شبیه یک ربات عمل میکند و مقادیری که کاربر برای فیلدهای خاص مثل ایمیل، موبایل و شماره تلفن، کدپستی، استان و مقادیر عددی وارد می‌کند را بررسی و در صورتی که فرمت لازم را نداشته باشد همان موقع به کاربر اطلاع میدهد تا آن را تصحیح و اطلاعات درخواستی را بصورت درست وارد نماید.

در فرم تسویه حساب ووکامرس بطور کلی ما 11 فیلد مجزا داریم که بشرح زیر هستند:

  • billing_first_name (نام شخص در فرم صورتحساب)
  • billing_last_name (نام خانوادگی مشتری در فرم صورتحساب)
  • billing_company (شرکت در فرم صورتحساب)
  • billing_country (کشور در فرم صورتحساب)
  • billing_address_1 (فیلد اول آدرس در فرم صورتحساب)
  • billing_address_2 (فیلد دوم آدرس در فرم صورتحساب)
  • billing_city (شهر در فرم صورتحساب)
  • billing_state (استان در فرم صورتحساب)
  • billing_postcode (کدپستی در فرم صورتحساب)
  • billing_phone (شماره تلفن یا موبایل در فرم صورتحساب)
  • billing_email (ایمیل در فرم صورتحساب)

شما می‌توانید هر کدام از فیلدهای بالا را جابجا کنید. برای این کار کافی است در محیط تنظیمات افزونه موس خود را بر روی آیکون 3 خط کنار هر فیلد قرار دهید و با Drag & Drop آن را جابجا و بالا و پایین کنید و موقعیت آن فیلد نسبت به سایرین را تغییر دهید.

برای غیر فعال کردن و به اصطلاح حذف هر فیلد کافی است که دکمه ویرایش فیلد مربوطه را زده و تیک گزینه فعال (Enabled) و ضروری (Required) را بردارید و تغییرات خود را با زدن دکمه Save & Close ذخیره کنید.

سایت‌های فروشگاهی معمولا به فیلدهای billing_company و billing_country و billing_address_2 نیازی ندارند و می‌توانند آنها را غیرفعال و حذف نمایند.

سایت‌های آموزشی و فروش محصولات دانلودی نیز معمولا به فیلدهای billing_company ، billing_country ، billing_address_1 ، billing_address_2 ، billing_city ، billing_state و billing_postcode نیازی ندارند و می‌توانند آنها را غیرفعال و حذف نمایند.

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

اگر در سایت وردپرسی شما شخصی کالای فیزیکی را خرید می‌کند و درخواست دارد برای فرد سوم شخصی ارسال شود (مثلا شما یک هدیه برای همسر خود خریده‌اید و تمایل دارید به آدرس محل کار او ارسال شود)، اینجاست که پای فیلدهای حمل و نقل به میان می‌آید. کاربر اطلاعات دقیق خود و محل سکونت خود را در فیلدهای صورتحساب فرم پرداخت وارد می‌کند و تمایل دارد که محصول فیزیکی خریداری شده برای شخصی دیگر و در مکان و آدرسی دیگر وارد شود و اینجاست که باید اطلاعات شخص سوم را در فیلدهای حمل و نقل (Shipping Fields) وارد کند.

شما می‌توانید کلیه فیلدهای حمل و نقل فرم پرداخت ووکامرس (Shipping Fields) را ویرایش و حذف کنید. برای این کار در افزونه به سربرگ (Shipping Fields) مراجعه کنید.

فیلدهای حمل و نقل افزونه Checkout Field Editor (Checkout Manager) for WooCommerce

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

  • shipping_first_name (فیلد نام شخص در فرم حمل و نقل)
  • shipping_last_name (فیلد نام خانوادگی مشتری در فرم حمل و نقل)
  • shipping_company (فیلد شرکت در فرم حمل و نقل)
  • shipping_country (فیلد کشور در فرم حمل و نقل)
  • shipping_address_1 (فیلد آدرس یک در فرم حمل و نقل)
  • shipping_address_2 (فیلد ادرس دو در فرم حمل و نقل)
  • shipping_city (فیلد شهر در فرم حمل و نقل)
  • shipping_state (فیلد استان در فرم حمل و نقل)
  • shipping_postcode (فیلد کدپستی در فرم حمل و نقل)

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

یک نکته مهم:
فیلد کشور در فرم صورت حساب و حمل‌و‌نقل یک فیلد ضروری برای محصولات فیزیکی است. اگر آن را حذف کنید، فرم تسویه حساب شما خطای «لطفاً برای ادامه یک آدرس وارد کنید» را نشان می دهد. اگر مشتریان شما متعلق به کشور خاصی هستند (مثلا فقط به ساکنان کشور ایران می‌فروشید) در تنظیمات پیکربندی ووکامرس مکان‌های فروش و محل(های) حمل و نقل را ایران مشخص کرده و سپس تیک ضروری بودن کشور را بردارید و در نهایت آن را غیر فعال و حذف کنید تا در صفحه تسویه حساب شما ظاهر نشود.

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

در صفحه پرداخت ووکامرس بخشی وجود دارد به نام توضیحات تکمیلی (Additional information) که فیلدی دارد با نام توضیحات سفارش (Order notes یا order comments) که یک فیلد اختیاری است و کاربر یا مشتری می‌تواند توضیحات و یا خواسته خودش برای ارسال سفارش و یا بسته بندی و تحویل و غیره را داخل کادر آن یادداشت کند.

در صورتی که به این فیلد نیازی ندارید و می‌خواهید آن را حذف کنید کافی است در بخش فیلدهای اضافی (Additional Fields) افزونه، خیلی راحت این فیلد را غیر فعال کنید تا در صفحه پرداخت نمایش داده نشود.

فیلدهای اضافی و توضیحات تکمیلی و توضیحات سفارش افزونه Checkout Field Editor (Checkout Manager) for WooCommerce

ویرایش فرم تسویه حساب ووکامرس و حذف فیلدهای اضافی صفحه پرداخت با استفاده از کد PHP

مسلما همیشه استفاده از تکه کد PHP برای ایجاد تغییرات در وردپرس و ووکامرس بر استفاده از افزونه برتری دارد. ما می‌توانیم خیلی راحت فیلد‌های اضافی که در صفحه پرداخت ووکامرس به آنها نیاز نداریم را با استفاده از تکه کد PHP حذف کنیم. برای این کار کافی است کد زیر را کپی کرده و آن را در فایل functions.php قالب یا پوسته فرزند قالب خود قرار دهید.

/**  Remove all possible fields **/
function webzoj_remove_checkout_fields( $fields ) {

    // Billing fields
    unset( $fields['billing']['billing_company'] );
    unset( $fields['billing']['billing_email'] );
    unset( $fields['billing']['billing_phone'] );
    unset( $fields['billing']['billing_state'] );
    unset( $fields['billing']['billing_first_name'] );
    unset( $fields['billing']['billing_last_name'] );
    unset( $fields['billing']['billing_address_1'] );
    unset( $fields['billing']['billing_address_2'] );
    unset( $fields['billing']['billing_city'] );
    unset( $fields['billing']['billing_postcode'] );
    unset( $fields['billing']['billing_country'] );

    // Shipping fields
    unset( $fields['shipping']['shipping_company'] );
    unset( $fields['shipping']['shipping_phone'] );
    unset( $fields['shipping']['shipping_state'] );
    unset( $fields['shipping']['shipping_first_name'] );
    unset( $fields['shipping']['shipping_last_name'] );
    unset( $fields['shipping']['shipping_address_1'] );
    unset( $fields['shipping']['shipping_address_2'] );
    unset( $fields['shipping']['shipping_city'] );
    unset( $fields['shipping']['shipping_postcode'] );
    unset( $fields['shipping']['shipping_country'] );

    // Order fields
    unset( $fields['order']['order_comments'] );

    return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'webzoj_remove_checkout_fields' );

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

بطورمثال اگر می‌خواهید فیلد نام صورت حساب از فرم پرداخت حذف نشود کافی است خط زیر را از کد بالا حذف کنید:

unset( $fields['billing']['billing_first_name'] );

تغییر کلاس (Class) فیلدهای مختلف فرم تسویه حساب

اگر تمایل دارید که پهنا یا عرض هر کدام از فیلدهای موجود در صفحه پرداخت خود را تغییر دهید می‌توانید از کد زیر استفاده کنید:

//نصف کردن اندازه فیلد موبایل و ایمیل
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );

function custom_override_checkout_fields( $fields ) {

    $fields['billing']['billing_phone']['class'] = array('form-row', 'form-row', 'form-row-first', 'address-field', 'validate-phone');
    $fields['billing']['billing_email']['class'] = array('form-row', 'form-row', 'form-row-last', 'address-field', 'validate-email');
    
    return $fields;
}

بطور مثال من با استفاده از کد بالا، اندازه هر یک از فیلدهای موبایل (billing_phone) و ایمیل (billing_email) فرم تسویه حساب صفحه پرداخت ووکامرس را از تمام عرض به نیم عرض تبدیل کردم، البته فیلد موبایل نیم عرض ابتدایی و فیلد ایمیل نیم عرض انتهایی تا بخوبی در کنار هم قرار گیرند.

حذف فیلد توضیحات سفارش و بخش توضیحات تکمیلی صفحه پرداخت ووکامرس

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

// حذف woocommerce-additional-fields صفحه پرداخت ووکامرس
add_filter('woocommerce_enable_order_notes_field', '__return_false');

افزودن نگهدارنده (Placeholder) به فیلدهای فرم تسویه حساب ووکامرس

برای افزودن نگهدارنده (Placeholder) به هر یک از فیلدهای فرم تسویه حساب صفحه پرداخت ووکامرس می‌توانید از کد زیر استفاده کنید:

// افزودن پلیس هولدر برای فیلد های صفحه تسویه حساب
add_filter( 'woocommerce_checkout_fields' , 'override_billing_checkout_fields', 20, 1 );
 function override_billing_checkout_fields( $fields ) {

     $fields['billing']['billing_first_name']['placeholder'] = 'نام خود را وارد کنید';
     $fields['billing']['billing_last_name']['placeholder'] = 'نام خانوادگی خود را وارد کنید';
     $fields['billing']['billing_phone']['placeholder'] = 'با اعداد انگلیسی';
     $fields['billing']['billing_email']['placeholder'] = 'ایمیل خود را کامل و دقیق وارد کنید';

     return $fields;
}

بطور مثال من با استفاده از کد بالا متن نگهدارنده (Placeholder) دلخواه برای هر کدام از فیلدهای نام، نام خانوادگی، شماره موبایل و ایمیل قرار دادم.

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

با استفاده از کد زیر می‌توانید فیلدهای ضروری صفحه پرداخت ووکامرس را اختیاری کنید:

add_filter( 'woocommerce_billing_fields', 'adjust_requirement_of_checkout_contact_fields');
function adjust_requirement_of_checkout_contact_fields( $fields ) {
    $fields['billing_phone']['required']    = false;
    $fields['billing_email']['required']    = false;

    return $fields;
}

بطور مثال من با استفاده از کد بالا دو فیلد ایمیل و تلفن (شماره موبایل) درفرم تسویه حساب صفحه پرداخت را اختیاری کردم تا اگر مشتری و کاربر مایل به پر کردن آنها نبود، روند خرید توسط کاربر رها نشود.

تغییر نام برچسب (Label) فیلدهای فرم صفحه تسویه حساب ووکامرس

برای تغییر لیبل هر کدام از فیلدهای فرم صفحه پرداخت ووکامرس می‌توانید با استفاده از کد زیر این کار را انجام دهید:

/**
* Snippet Name:     Change the WooCommerce checkout field labels.
*/

add_filter( 'woocommerce_checkout_fields' , 'webzoj_wc_checkout_fields' );
 
function webzoj_wc_checkout_fields( $fields ) {
 $fields['billing']['billing_phone']['label'] = 'شماره موبایل';
 return $fields;
}

بطور مثال من با استفاده از کد بالا برچسب (Label) فیلد موبایل صورت حساب را از تلفن به شماره موبایل تغییر دادم.

چپ‌چین کردن ورودی فیلدهای شماره موبایل و ایمیل

با استفاده از کد CSS زیر می‌توانید مقادیر ورودی فیلد شماره موبایل و ایمیل فرم پرداخت ووکامرس را از راست‌چین به چپ‌چین تغییر دهید تا کاربر در هنگام ورود و یا تصحیح مقادیر دچار اشتباه نشود:

CSS
#billing_phone, #billing_email {
    direction: ltr;
    text-align: left;
}

/* webkit solution */
::-webkit-input-placeholder { text-align:right; }
/* mozilla solution */
input:-moz-placeholder { text-align:right; }

برای استفاده از کد بالا، تنها کافیست آن را در قسمت Custom CSS قالب خود (نمایش > سفارشی‌سازی > CSS اضافی) و یا اگر از المنتور استفاده می‌کنید این کد را در بخش کدهای CSS صفحه پرداخت (Checkout) قرار دهید.

بطور کلی از کدهای زیر می‌توانید برای ویرایش و تغییر تمامی فیلدها و مقادیر صفحه پرداخت ووکامرس استفاده کنید:

add_filter( 'woocommerce_checkout_fields' , 'webzoj_wc_checkout_fields' );

// This example changes the default placeholder text for the state drop downs to "Select A State"
function webzoj_wc_checkout_fields( $fields ) {
 $fields['billing']['billing_state']['placeholder'] = 'Select A State';
 $fields['shipping']['shipping_state']['placeholder'] = 'Select A State';
 return $fields;
}

که بجای مقادیر ابتدایی اول و دوم می‌توانند هر کدام از موارد زیر قرار گیرند:

// Billing Fields
['billing']['billing_first_name']
['billing']['billing_last_name']
['billing']['billing_company']
['billing']['billing_address_1']
['billing']['billing_address_2']
['billing']['billing_city']
['billing']['billing_postcode']
['billing']['billing_country']
['billing']['billing_state']
['billing']['billing_email']
['billing']['billing_phone']

// Shipping Fields
['shipping']['shipping_first_name']
['shipping']['shipping_last_name']
['shipping']['shipping_company']
['shipping']['shipping_address_1']
['shipping']['shipping_address_2']
['shipping']['shipping_city']
['shipping']['shipping_postcode']
['shipping']['shipping_country']
['shipping']['shipping_state']

// Account Fields
['account']['account_username']
['account']['account_password']
['account']['account_password-2']

// Additional Fields
['order']['order_comments']

و بجای مقدار سوم هر یک از مقادیر زیر می‌توانند قرار گیرند:

// These are the specific properties that can be used to customize the checkout fields
['type'] // Field Type. Valid types are text, textarea, password, or select.
['label'] // Field Label. Above the input box.
['placeholder'] // Placeholder text. Inside the input box.
['class'] // add a class to the field
['required'] // Display whether field should be required or not. Values either "true" or "false"
['clear'] // Apply clear fix to the field. Values either "true" or "false"
['label_class'] // add class to field label
['options'] // modify select boxes with an array of values

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

فیلدهای صفحه پرداخت ووکامرس به 4 گروه تقسیم‌بندی می‌شوند:

  • Billing address – billing
  • Shipping address – shipping
  • Account login – account
  • Additional information – order

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

  • Billing
    • billing_first_name – 10
    • billing_last_name – 20
    • billing_company – 30
    • billing_address_1 – 40
    • billing_address_2 – 50
    • billing_city – 60
    • billing_postcode – 70
    • billing_country – 80
    • billing_state – 90
    • billing_email – 100
    • billing_phone – 110
  • Shipping
    • shipping_first_name – 10
    • shipping_last_name – 20
    • shipping_company – 30
    • shipping_address_1 – 40
    • shipping_address_2 – 50
    • shipping_city – 60
    • shipping_postcode – 70
    • shipping_country – 80
    • shipping_state – 90
  • Account
    • account_password (no priority)
  • Order
    • order_comments (no priority)

عددی که در مقابل هر فیلد نوشته شده است، اولویت پیش‌فرض آن در ووکامرس است. حال اگر شما می‌خواهید هر فیلدی را جابجا کنید، باید با توجه به این اولویت‌ها و با استفاده از کد زیر، به راحتی هر فیلد یا گروهی از فیلدها را بصورت کاملا دلخواه چینش و تغییر اولویت دهید.

add_filter( 'woocommerce_checkout_fields', 'webzoj_reorder_woo_checkout_fields' );

function webzoj_reorder_woo_checkout_fields( $checkout_fields ) {
$checkout_fields['billing']['billing_email']['priority'] = 5;
return $checkout_fields;
}

بطور مثال با استفاده از کد بالا شما می‌توانید فیلد ایمیل را به عنوان اولین فیلد (در ابتدای فرم پرداخت و ماقبل از نام و نام خانوادگی) نمایش دهید. در این کد اولویت قرارگیری و نمایش فیلد ایمیل (priority) عدد 5 است. چون عدد 5 از عدد 10 (اولویت نمایش و قرارگیری نام در billing_first_name) و 20 (اولویت نمایش و قرارگیری نام‌خانوادگی در billing_last_name) کمتر است، پس ایمیل را قبل از تمامی فیلدها و مسلما قبل از نام و نام خانوادگی نمایش خواهد داد.

همچنین شما می‌توانید از اولویت عددی مابین دو عدد پیش‌فرض ووکامرس نیز استفاده کنید.بطور مثال اولویت نمایش و قرارگیری آدرس پستی 40 و شهر 60 و کدپستی 70 و کشور 80 و استان 90 است. شما می‌توانید از کد بالا استفاده و خط کد مربوط به تغییر اولویت را تکثیر و برای این که پس از نام و نام خانوادگی کشور قرار گیرد اولویت آن را 21 و پس از آن استان با اولویت 22 و سپس شهر با اولویت 23 و بعد از ان آدرس پستی با priority عدد 24 و در نهایت کدپستی با اولویت 25 قرار دهید. به این ترتیب تنها ایمیل با اولویت پیش‌فرض 90 و تلفت (شماره موبایل) با اولویت پیشفرض 100 پس از آنها در فرم Billing صفحه پرداخت قرار خواهند گرفت.

جمع بندی و کلام آخر

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

هر سوال، مشکل یا ابهامی در این خصوص دارید با ما در کامنت‌ها در میان بگذارید. صمیمانه و سریع پاسخگوی شما هستیم.

به این محتوا امتیاز بدین!

0 / 5

Your page rank:

44 دیدگاه

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

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

Avatar photo
مهدی

سلام..وقت بخیر..
بنده با کدهای php اومدم فیلدهای استان و شهر و جابجا کردم
$fields['billing']['billing_state']['priority'] = 60;
$fields['billing']['billing_city']['priority'] = 70;

اما وقتی ثبت سفارش و میزنیم ادرس مشتری و اول نام و نام خانوادگی بعد استان و بعد شهر و میزنه…یعنی شهر و استان اخر ادرس درج میکنه !!! نمونه اش :
رضا شریفی, شهرک خویی ک شهید عراقی پ 45, امین‌شهر, کرمان, 111396464
بنده میخام استان و شهر بیاد اول ادرس نه اخر؟!!!!!
با تشکر..

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلام
اوقات شما هم به کام
با کدهای این صفحه می‌تونین فقط ترتیب قرارگیری فیلدها در صفحه پرداخت (تسویه حساب) رو تغییر بدین.
اگر منظورتون اینه که در صفحه تشکر از پرداخت یا ایمیل‌های ووکامرس و کلا جاهای دیگه ترتیب رو اشتباه نشون میده، این مورد مربوط به این کدها نمیشه و باید از طریقی دیگه و به روشی دیگه اون رو برطرف کنید.
موفق باشید و سربلند

Avatar photo
شهاب

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

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلام
بطور کلی هنگامی که کاربر با شماره موبایل در سایت شما ثبت نام می‌کند، شماره کاربر در قالب یک فیلد مجزا و اختصاصی در user meta در metadata ذخیره می‌شود. اگر از افزونه‌های ثبت‌نام با شماره موبایل همچون چاپار یا کراسنو استفاده نمایید این قابلیت را به شما میدهند تا در تنظیمات افزونه تعیین کنید که هنگامی که کاربر در سایت ثبت‌نام می‌کند، همان موقع شماره موبایل کاربر به عنوان فیلد billing_phone در user meta در metadata هم ذخیره گردد تا با مراجعه کاربر به صفحه پرداخت ووکامرس نیازی به وارد کردن مجدد شماره موبایل در فیلد فرم پرداخت نباشد و این فیلد بطور خودکار توسط وردپرس پر شود. البته این قابلیت برای سایر اطلاعات همچون نام و نام خانوادگی و ایمیل نیز قابل انجام است که هم اکنون تمامی موارد در سایت وب زوج پیاده سازی شده است.

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلام
آموزش “تغییر چینش فیلدهای فرم پرداخت صفحه تسویه حساب ووکامرس” به مقاله اضافه شد.

Avatar photo
محمدرضا

من میخوام وقتی کاربری که وارد سایت میشه و 1 بار خرید انجام میده و اطلاعاتش رو وارد میکنه برای بار دوم که وارد صفحه تسویه حساب میشه دیگه این اطلاعات به صورت پیش فرض پر شده باشن و فقط کاربر تایید کنه و بره مرحله بعد ایا امکانش هست؟
چون برای من هر سری که وارد فرم تسویه حساب میشه باید اطلاعاتش رو دوباره وارد کنه

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

به طور پیش فرض، ووکامرس ویژگی “autocomplete” رو به تقریبا همه فیلدهای صفحه تسویه حساب اضافه می‌کنه. مثلا، به فیلد شماره تلفن صورتحساب یا billing_phone مقدار “autocomplete=tel” و به فیلد کشور صورتحساب یا billing_country مقدار “autocomplete=country” رو نسبت میده.
وقتی کاربر لاگین نکرده باشه یا قبلا خریدی انجام نداده باشه، ممکنه فیلدهای صفحه تسویه حساب ووکامرس به جای این که از دیتابیس سایت شما پر بشن، یا اصلا پر نشن یا توسط مرورگر بر اساس اطلاعات و آدرس‌های ذخیره شده در مرورگر پر بشه.

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

با سلام
احتمالا کلاس (Class) فیلدهای مختلف فرم تسویه حساب برای این دو فیلد ایمیل و موبایل به درستی مقدار دهی نشده تا یکی form-row-first و دیگری form-row-last باشد.

Avatar photo
علیرضا

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

$fields['billing']['billing_city']['class'] = array('form-row', 'form-row', 'form-row-first', 'address-field', 'validate-city');
$fields['billing']['billing_state']['class'] = array('form-row', 'form-row', 'form-row-last', 'address-field', 'validate-state');
$fields['billing']['billing_phone']['class'] = array('form-row', 'form-row', 'form-row-first', 'address-field', 'validate-phone');
$fields['billing']['billing_email']['class'] = array('form-row', 'form-row', 'form-row-last', 'address-field', 'validate-email');

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

چه خطایی بهتون میده؟

Avatar photo
علیرضا

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

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلام
اوقات به کام
قبل از هر چیزی خیلی خوشحالم این مقاله که حاصل تحقیقات شخصی من بوده برای شما نیز کاربری و مفید واقع شده.
اما در خصوص پیشنهاد فهرست مطالب برای هر مقاله باید بهتون بگم که ما این قابلیت رو هم در حالت دسکتاپ در sidebar هر مقاله و هم بصورت offcanvs در حالت موبایل داریم که اکنون در آپدیت اخیر افزونه آن، یک باگ ریز در فراخوانی استایل حالت sticky فهرست مطالب موبایل در افزونه وجود داشت که اطلاع دادم به توسعه دهنده افزونه و قراره هرچه زودتر اون رو fix کنه تا مثل همیشه فهرست مطالب عالی نشون داده بشه برای تمامی کاربران موبایل و دسکتاپ.
دمتون گرم
پاینده باشید

Avatar photo
احمد هاتفی

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

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

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

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلامت باشی
آقایی!

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

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

Avatar photo
قهرمانی

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

یک سوال داشتم این افزونه که گفتید Checkout Field Editor for WooCommerce چطوری میتونم کاری کنم که فیلد های اضافی فقط برای مجازی و دانلودی برداشته بشه ولی برای محصولات فیزیکی این فیلد های آدرس باشه؟ هر چی تو افزونه گشتم پیدا نکردم راهنمایی میکنید؟
پیشاپیش از راهنمایی و پاسخگویی شما سپاسگزارم

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

خیلی خوشحالم که این مقاله براتون مفید بوده. همه مقالات سایت ما با همین رویکرد نوشته شدن و تماما تست و آزمایش شدن و بعدا به مقاله تبدیل شدن.
برای حذف فیلدهای دلخواه برای محصولات دیجیتال باید از افزونه‌های دیگری همچون Digital Goods for WooCommerce Checkout استفاده کنید. با استفاده از این افزونه، هر کدام از محصولات شما که تیک دانلودی یا مجازی بودن آن در ووکامرس خورده باشد، تنها فیلدهای لازم و ضروری را در صفحه پرداخت به مشتری نشان خواهد داد.

Avatar photo
صفایی

سلام وقت شما بخیر

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

ببخشید یه سوالی داشتم. من روی لوکال بعضی قالب هارو (مثل وودمارت) نصب میکنم صفحه سبد خرید بدون استایل لود میشه. افزونه هم فقط ووکامرس و المنتور نصب دارم نمیدونم مشکل کجاست که فایل css رو نمیخونه. شما برای این مشکل راه حلی دارید؟

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلام
اوقات شما هم به کام
خواهش میکنم، خوشحالم براتون مفید بوده
متاسفانه باید مشکلتون دقیق تر و عمیق‌تر بررسی بشه و در حال حاضر ایده ای برای این که بهتون بگم مشکل از کجاست ندارم.
بطور معمول نباید چنین مشکلی پیش بیاد اما با توجه به این که از wampServer استفاده می‌کنید بهتره اون رو عوض کنید و از نرم‌افزار Local تا ببینید باز هم این مشکل رو دارید یا خیر.

Avatar photo
صفایی

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

Avatar photo
صفایی

سلام وقت شما بخیر

من با استفاده از ووکامرس فارسی لیست شهرهای ایران رو در صفحه پرداخت لود میکنم، امکانش هست این قابلیت در فایل functions.php قرار داده بشه؟

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلام
اوقات شما هم به کام
خیر متاسفانه، الزاما تمامی کارها رو نمیشه با یک تکه کد در فایل functions.php انجام داد.

Avatar photo
بهنام

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

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

با توجه به Name که شما برای اون فیلد جدید دلخواهتون مشخص می‌کنید در همان جدول user meta که اطلاعات مشتری‌های ووکامرس قرار دارد ذخیره می‌شود.
مدیر سایت با توجه به Name تعیین کرده که اکنون به عنوان key value محسوب می‌شود می‌تواند این اطلاعات را هرجایی که بخواهد برای هر کاربری فراخوانی کند.

Avatar photo
بهنام

با سپاس از پاسخ شما
آیا در قسمت شناسنامه کابران در دسترس خواهد بود؟یا حتما باید از طریق دیتابیس اقدام به ویرایش کرد؟
آیا امکانی هست که این فیلدها در شناسنامه کاربران اضافه بشود و هم اینکه کاربران در پنل خود آن فیلدها را مشاهده و امکان ویرایش داشته باشند؟

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

تا امروز چنین چیزی رو توی افزونه‌های مختلف برای این کار تست نکردم که ببینم اون فیلد جدیدی که ما اضافه می‌کنیم را به قسمت پروفایل هر کاربر نیز اضافه می‌کند یا خیر، این مورد رو خودتون باید تست کنید.

Avatar photo
سلمان شرفی

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

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلام
اوقات شما هم به کام
همانند سایر فیلدها وقتی کاربر اطلاعاتی وارد میکنه اونها در کوکی کاربر و دیتابیس ذخیره میشن و در دفعات بعدی autofill میشن.
برای این کار باید با کد نویسی php اون مقادیر رو ریست کنید تا پس از هر رفرش برگه مقادیر جدید بگیره.

Avatar photo
علی براتی

با سلام و خسته نباشید من هر کاری میکنم با توجه به اون توضییحاتی که درباره برداشتن خطا (لطفا برای ادامه یک آدرس وارد کنید) در بالا گفتید این خطا حل نمیشه

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلام، سلامت باشید
روال معمولش رو در این مقاله براتون توضیح دادم، اگر دقیقا تمامی مراحل رو پیش میرین و برای شما خطا حل نمیشه پس احتمالا سایتتون نیاز به بررسی عمیقتری داره تا ببینیم مشکل از چه چیز دیگه‌ای میتونه باشه!

Avatar photo
فرشاد امیری

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

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلام
اوقات شما هم به کام
باید بررسی کنید و ببینید مشکل از آپدیت نبودن قالبتون هست یا تداخل با یکی از افزونه ها باعث این مشکل شده.

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلام
انتظار میره بزودی با نسخه جدید ووکامرس و حالت بلوکی ویرایشگر گوتنبرگ هماهنگ و سازگار بشه

Avatar photo
مریم عباسی

سلام وقتتون بخیر
من میخوام فیلد یادداشت متن پیش فرض داخلش تغییر کنه و بخوام که جمله ای که من میگم و نمایش بده و کاربر بفهمه که داخل مادر چی. باید بنویسه

عکس پروفایل امیرحسین صادقی
امیرحسین صادقی

سلام
اوقات شما هم به کام
باید به انگلیسی در اینترنت سرچ کنید “Change the Additional Information Placeholder Text field in WooCommerce” و از کد مخصوصش برای تغییر عبارت داخل فیلد اون استفاده کنید.

آنچه در این مقاله می‌خوانید
جدیدترین مقالات

5 مقاله اخیر از این قسمت برای شما در دسترس است

قابلیت Blueprints در نرم‌افزار لوکال هاست Local
نصب SourceGuardian روی نرم‌افزار Local | نصب ماژول سورس گاردین روی لوکال هاست LocalWP
نصب ionCube روی نرم‌افزار Local | نصب ماژول آیون کیوب روی لوکال هاست LocalWP
نصب ionCube روی نرم‌افزار Local | نصب ماژول آیون کیوب روی لوکال هاست
نصب SSL روی نرم‌افزار Local و فعالسازی HTTPS برای لوکال هاست
فعالسازی SSL برای نرم‌افزار Local
رفع ارور Missing hosts entry / Could not update hosts file نرم‌افزار Local
رفع ارور Waming! Missing hosts entry / Could not update hosts file نرم‌افزار Local