در فروشگاههای آنلاین، فرآیند تسویه حساب یکی از مهمترین مراحل در تجربه خرید مشتریان است. یک صفحه تسویه حساب ساده و کارآمد میتواند نرخ تبدیل بازدیدکننده به مشتری را افزایش دهد و رضایت کاربران را بهبود بخشد. با این حال، گاهی نیاز است تا فیلدهای اضافی یا سفارشی را به صفحه تسویه حساب اضافه کنیم یا فیلدهای غیرضروری را حذف نماییم تا فرآیند خرید را متناسب با نیازهای کسبوکار خود شخصیسازی کنیم.
در ادامه ما به دو روش (با افزونه و کد) این فرآیند را توضیح خواهیم داد. با ما همراه باشید.
ویرایش صفحه تسویه حساب ووکامرس با 2 روش
روش اول: با استفاده از افزونه Checkout Field Editor (Checkout Manager) for WooCommerce
۱. نصب افزونه
۲. دسترسی به افزونه
۳. مدیریت فیلدها
۴. مرتبسازی فیلدها
۵. بازگردانی تنظیمات به حالت پیشفرض
نکات پایانی
روش دوم: بدون استفاده از افزونه (کد PHP)
برای ویرایش صفحه پرداخت ووکامرس و فرم تسویه حساب بدون استفاده از افزونه، میتوانید از کدهای سفارشی در فایل functions.php قالب وردپرس خود استفاده کنید. این روش به شما امکان میدهد تا فیلدهای تسویه حساب را سفارشی کنید، فیلدهای غیرضروری را حذف کرده و برخی فیلدها را اختیاری کنید.
۱. حذف فیلدهای اضافی از فرم تسویه حساب
برای حذف فیلدهای غیرضروری از فرم تسویه حساب، میتوانید از فیلتر woocommerce_checkout_fields استفاده کنید. در مثال زیر نحوه حذف فیلدهای آدرس خط دوم و نام شرکت آورده شده است:
add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' ); function custom_override_checkout_fields( $fields ) { // حذف فیلد یادداشت unset($fields['order']['order_comments']); // حذف فیلد نام شرکت unset($fields['billing']['billing_company']); // حذف فیلد نام 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']); // حذف فیلد استان unset($fields['billing']['billing_state']); // حذف فیلد شماره تماس unset($fields['billing']['billing_phone']); // حذف فیلد ایمیل unset($fields['billing']['billing_email']); // حذف فیلد رمز عبور unset($fields['account']['account_password']); // حذف فیلد تکرار رمز عبور unset($fields['account']['account_password-2']); return $fields; }
۲. اختیاری کردن فیلدهای فرم تسویه حساب
اگر میخواهید برخی فیلدهای تسویه حساب را از حالت اجباری به حالت اختیاری تغییر دهید، میتوانید با استفاده از کد زیر این کار را انجام دهید:
function custom_optional_checkout_fields( $fields ) { // اختیاری کردن فیلد نام $fields['billing']['billing_first_name']['required'] = false; // اختیاری کردن فیلد نام خانوادگی $fields['billing']['billing_last_name']['required'] = false; // اختیاری کردن فیلد آدرس ۲ $fields['billing']['billing_address_2']['required'] = false; // اختیاری کردن فیلد ایمیل $fields['billing']['billing_email']['required'] = false; // اختیاری کردن فیلد تلفن $fields['billing']['billing_phone']['required'] = false; return $fields; } add_filter( 'woocommerce_checkout_fields', 'custom_optional_checkout_fields' );
۳. تغییر ترتیب فیلدهای فرم تسویه حساب
برای تغییر ترتیب نمایش فیلدها در صفحه تسویه حساب، میتوانید از این کد استفاده کنید:
function custom_add_checkout_field( $fields ) { $fields['billing']['billing_custom_field'] = array( 'type' => 'text', 'label' => 'کدملی', 'placeholder' => '۱۲۳۴۵۶۷۸۹', 'required' => true, 'priority' => 25, ); return $fields; } add_filter( 'woocommerce_checkout_fields', 'custom_add_checkout_field' );
۴. اضافه کردن فیلد جدید به فرم تسویه حساب
اگر نیاز دارید فیلد جدیدی به فرم تسویه حساب اضافه کنید، از کد زیر استفاده کنید:
function custom_add_checkout_field( $fields ) { $fields['billing']['billing_custom_field'] = array( 'type' => 'text', 'label' => 'عنوان دلخواه', 'placeholder' => 'توضیحات دلخواه', 'required' => true, 'priority' => 25, ); return $fields; } add_filter( 'woocommerce_checkout_fields', 'custom_add_checkout_field' );
در این مثال، یک فیلد متنی جدید با نام billing_custom_field و برچسب “عنوان دلخواه” به فرم تسویه حساب اضافه میشود.
۵. ذخیره و نمایش اطلاعات فیلد سفارشی
اگر فیلد جدیدی اضافه کردهاید و میخواهید اطلاعات آن را ذخیره کرده و در بخش سفارشات نمایش دهید، از کد زیر استفاده کنید:
// ذخیره فیلد سفارشی function custom_save_checkout_field( $order_id ) { if ( ! empty( $_POST['billing_custom_field'] ) ) { update_post_meta( $order_id, '_billing_custom_field', sanitize_text_field( $_POST['billing_custom_field'] ) ); } } add_action( 'woocommerce_checkout_update_order_meta', 'custom_save_checkout_field' ); // نمایش فیلد سفارشی در پنل مدیریت function custom_display_checkout_field_in_admin_order_meta( $order ) { $custom_field = get_post_meta( $order->get_id(), '_billing_custom_field', true ); if ( $custom_field ) { echo '<p><strong>' . __( 'Custom Field' ) . ':</strong> ' . esc_html( $custom_field ) . '</p>'; } } add_action( 'woocommerce_admin_order_data_after_billing_address', 'custom_display_checkout_field_in_admin_order_meta', 10, 1 );
اختیاری کردن فیلدها در قالب هلو المنتور
در قالب هلو المنتور، نحوه استفاده از کدها برای حذف یا اختیاری کردن فیلدهای ووکامرس کمی متفاوت از قالبهای دیگر است. دلیل این تفاوت، سازگاری ووکامرس با المنتور و ساختار قالب هلو المنتور است که در بخشهای مختلف از ویجتهای سفارشی برای طراحی صفحات مانند صفحه پرداخت استفاده میکند.
در قالبهای استاندارد، ووکامرس بهصورت مستقیم از فایلهای قالب برای ساخت فرمهای پرداخت استفاده میکند. اما در هلو المنتور، برخی تنظیمات ممکن است توسط ویجتهای المنتور تغییر کنند و باید به این نکات توجه داشت:
1. سازگاری با ویجتها: در هلو المنتور، صفحات ووکامرس مانند صفحه پرداخت با ویجتهای المنتور ساخته شدهاند. بنابراین، اگر در طراحی از ویجتهای المنتور استفاده میکنید، ممکن است تغییرات کدهای PHP بلافاصله نمایش داده نشوند. در این حالت، استفاده از ویجت سفارشی المنتور برای فیلتر کردن یا تغییر فیلدها پیشنهاد میشود.
2. حذف و اختیاری کردن فیلدها: کدهای PHP که برای حذف یا اختیاری کردن فیلدهای ووکامرس استفاده میشوند، همچنان معتبر هستند و کار میکنند، اما به دلیل طراحی قالب، ممکن است نیاز به تنظیمات اضافی یا حتی رفرش کش المنتور باشد.
3. تست و بررسی: برای اطمینان از تأثیرگذاری تغییرات، پس از اعمال کدها، حتماً از صفحه تنظیمات المنتور، گزینه تجدید کش (Regenerate CSS) را فعال کنید. این کار باعث میشود تا تغییرات PHP شما در صفحه پرداخت نمایش داده شوند.
در نتیجه، اگرچه این کدها در هلو المنتور نیز کاربردی هستند، اما ممکن است به دلیل ساختار المنتور و نیاز به سازگاری با ویجتها، کمی متفاوت از قالبهای استاندارد عمل کنند.
// اختیاری کردن فیلد ایمیل add_filter( 'woocommerce_billing_fields', 'make_billing_email_optional' ); function make_billing_email_optional( $fields ) { $fields['billing_email']['required'] = false; return $fields; } // اختیاری کردن فیلد نام add_filter( 'woocommerce_billing_fields', 'make_billing_first_name_optional' ); function make_billing_first_name_optional( $fields ) { $fields['billing_first_name']['required'] = false; return $fields; } // اختیاری کردن فیلد نام خانوادگی add_filter( 'woocommerce_billing_fields', 'make_billing_last_name_optional' ); function make_billing_last_name_optional( $fields ) { $fields['billing_last_name']['required'] = false; return $fields; } // اختیاری کردن فیلد تلفن add_filter( 'woocommerce_billing_fields', 'make_billing_phone_optional' ); function make_billing_phone_optional( $fields ) { $fields['billing_phone']['required'] = false; return $fields; } // اختیاری کردن فیلد آدرس 1 add_filter( 'woocommerce_billing_fields', 'make_billing_address_1_optional' ); function make_billing_address_1_optional( $fields ) { $fields['billing_address_1']['required'] = false; return $fields; } // اختیاری کردن فیلد آدرس 2 add_filter( 'woocommerce_billing_fields', 'make_billing_address_2_optional' ); function make_billing_address_2_optional( $fields ) { $fields['billing_address_2']['required'] = false; return $fields; } // اختیاری کردن فیلد شهر add_filter( 'woocommerce_billing_fields', 'make_billing_city_optional' ); function make_billing_city_optional( $fields ) { $fields['billing_city']['required'] = false; return $fields; } // اختیاری کردن فیلد استان/ایالت add_filter( 'woocommerce_billing_fields', 'make_billing_state_optional' ); function make_billing_state_optional( $fields ) { $fields['billing_state']['required'] = false; return $fields; } // اختیاری کردن فیلد کد پستی add_filter( 'woocommerce_billing_fields', 'make_billing_postcode_optional' ); function make_billing_postcode_optional( $fields ) { $fields['billing_postcode']['required'] = false; return $fields; } // اختیاری کردن فیلد کشور add_filter( 'woocommerce_billing_fields', 'make_billing_country_optional' ); function make_billing_country_optional( $fields ) { $fields['billing_country']['required'] = false; return $fields; }
حذف کردن فیلدها در قالب هلو المنتور
// حذف فیلد ایمیل add_filter( 'woocommerce_billing_fields', 'remove_billing_email_field' ); function remove_billing_email_field( $fields ) { unset( $fields['billing_email'] ); return $fields; } // حذف فیلد نام add_filter( 'woocommerce_billing_fields', 'remove_billing_first_name_field' ); function remove_billing_first_name_field( $fields ) { unset( $fields['billing_first_name'] ); return $fields; } // حذف فیلد نام خانوادگی add_filter( 'woocommerce_billing_fields', 'remove_billing_last_name_field' ); function remove_billing_last_name_field( $fields ) { unset( $fields['billing_last_name'] ); return $fields; } // حذف فیلد تلفن add_filter( 'woocommerce_billing_fields', 'remove_billing_phone_field' ); function remove_billing_phone_field( $fields ) { unset( $fields['billing_phone'] ); return $fields; } // حذف فیلد آدرس 1 add_filter( 'woocommerce_billing_fields', 'remove_billing_address_1_field' ); function remove_billing_address_1_field( $fields ) { unset( $fields['billing_address_1'] ); return $fields; } // حذف فیلد آدرس 2 add_filter( 'woocommerce_billing_fields', 'remove_billing_address_2_field' ); function remove_billing_address_2_field( $fields ) { unset( $fields['billing_address_2'] ); return $fields; } // حذف فیلد شهر add_filter( 'woocommerce_billing_fields', 'remove_billing_city_field' ); function remove_billing_city_field( $fields ) { unset( $fields['billing_city'] ); return $fields; } // حذف فیلد استان/ایالت add_filter( 'woocommerce_billing_fields', 'remove_billing_state_field' ); function remove_billing_state_field( $fields ) { unset( $fields['billing_state'] ); return $fields; } // حذف فیلد کد پستی add_filter( 'woocommerce_billing_fields', 'remove_billing_postcode_field' ); function remove_billing_postcode_field( $fields ) { unset( $fields['billing_postcode'] ); return $fields; } // حذف فیلد کشور add_filter( 'woocommerce_billing_fields', 'remove_billing_country_field' ); function remove_billing_country_field( $fields ) { unset( $fields['billing_country'] ); return $fields; }
نکات پایانی
•پشتیبانگیری: قبل از هر تغییری در فایل functions.php، از فایلهای خود پشتیبان تهیه کنید.
•کدنویسی: به دقت کدها را در مکانهای مناسب قرار دهید تا از بروز مشکلات احتمالی جلوگیری شود.
•تست: پس از اعمال تغییرات، صفحه تسویه حساب را تست کنید تا مطمئن شوید که همه چیز به درستی کار میکند.
این روشها به شما امکان میدهند تا صفحه تسویه حساب ووکامرس خود را به دلخواه سفارشی کنید و تجربه کاربری مشتریان را بهبود بخشید.