همانطور که می‌دانید فرم موجود در برگه پرداخت در ووکامرس، فیلدهایی نظیر billing_phone ، shipping_address_1 و… دارد. برخی از این فیلدها در سفارش و برخی دیگر در شناسنامه (پروفایل) کاربر ذخیره می‌شوند. ممکن است شما بخواهید یک یا چند فیلد جدید به این بخش اضافه نمایید. در این نوشته شما را با نحوه ایجاد و ذخیره‌سازی فیلدهای سفارشی در برگه پرداخت ووکامرس آشنا خواهیم کرد.

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

نکته: شما به منظور استفاده از کدهای هر بخش باید آن را در فایل functions.php پوسته فرزند قرار دهید یا از افزونه Snippets استفاده نمایید. به خاطر داشته باشید کدها را در functions.php پوسته والد قرار ندهید، چون با به‌روزرسانی پوسته این کدها از بین خواهند رفت.

آنچه در این آموزش خواهید خواند:

افزودن فیلد سفارشی و ذخیره آن در پروفایل کاربر

افزودن فیلد سفارشی در برگه پرداخت و ذخیره آن در پروفایل کاربر

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

// Display field @ Checkout
add_action( 'woocommerce_after_checkout_billing_form', 'tidaweb_add_user_field_to_checkout' );
  
function tidaweb_add_user_field_to_checkout( $checkout )
{
 
    $current_user = wp_get_current_user();
    $saved_url = $current_user->user_url;
    
    woocommerce_form_field( 'user_url', array(        
        'type' => 'text',        
        'class' => array('user_url form-row-wide'),        
        'label' => __('Website URL'),        
        'placeholder' => __('http://yoursite.com'),        
        'required' => false
    ), $saved_url ); 
  
}

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

نوشته مرتبط
نجوا، سرویس پوش ایرانی

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

// Save Field Into User Meta
add_action( 'woocommerce_checkout_update_user_meta', 'tidaweb_checkout_field_update_user_meta' );
  
function tidaweb_checkout_field_update_user_meta( $user_id )
{
    if ( $user_id && $_POST['user_url'] ) {
    
        // once again, use "user_url"
        $args = array(
            'ID' => $user_id,
            'user_url' => esc_attr( $_POST['user_url'] )
        );      
        
        wp_update_user( $args );
    }
}

افزودن فیلد سفارشی و ذخیره آن در سفارش

افزودن فیلد سفارشی در برگه پرداخت و ذخیره آن به عنوان اطلاعات سفارش

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

// Display field @ Checkout
add_action( 'woocommerce_after_checkout_billing_form', 'tidaweb_add_order_field_to_checkout' );
  
function tidaweb_add_order_field_to_checkout( $checkout )
{

    woocommerce_form_field( 'gift_owner_name', array(        
        'type' => 'text',
        'class' => array('gift_owner_name form-row-wide'),     
        'label' => __('Gift Owner Name'),
        'required' => false
    ), $checkout->get_value( '_gift_owner_name' ) );

    woocommerce_form_field( 'gift_message', array(        
        'type' => 'textarea',
        'class' => array('gift_message form-row-wide'),     
        'label' => __('Gift Message'),
        'required' => false
    ), $checkout->get_value( '_gift_message' ) ); 
  
}

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

// Save Field Into Order Meta
add_action( 'woocommerce_checkout_update_order_meta', 'tidaweb_checkout_field_update_order_meta' );
  
function tidaweb_checkout_field_update_order_meta( $order_id )
{

    if ( ! empty( $_POST['gift_owner_name'] ) && ! empty( $_POST['gift_message'] )) {
        $gift_owner_name = wc_clean( $_POST['gift_owner_name'] );
        $gift_message = wc_clean( $_POST['gift_message'] );
        update_post_meta( $order_id, '_gift_owner_name', $gift_owner_name );
        update_post_meta( $order_id, '_gift_message', $gift_message );
    }
  
}

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

// Display field in order meta
add_action( 'woocommerce_admin_order_data_after_billing_address', 'tidaweb_display_order_meta' );
  
function tidaweb_display_order_meta( $order )
{
    echo '<p><strong>'.__('Gift Owner Name').':</strong> <br/>' . get_post_meta( $order->get_id(), '_gift_owner_name', true ) . '</p>';
    echo '<p><strong>'.__('Gift Message').':</strong> <br/>' . get_post_meta( $order->get_id(), '_gift_message', true ) . '</p>';
}
نمایش فیلدهای سفارشی در جزئیات سفارش

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

نوشته مرتبط
افزونه کیف پول برای ووکامرس TeraWallet For WooCommerce

منبع : Business Bloomer

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *