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

[short_link]

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

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

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

در صورتی که تمام شرط هایی که گذاشتیم درست بود به مرحله بعد و پرداخت میره در غیر اینصورت ارور متناظر رو که با تابع wc_add_notice که براش تعریف کردیم نمایش خواهد داد .

در نهایت این کدملی با مقدار national_code به عنوان پست متا در جدول post_meta  ذخیره میشه و  در هر جایی نیاز بود قابل نمایش هست.

 

<?php
function check_national_code($code)
{
    if(!preg_match('/^[0-9]{10}$/',$code))
        return false;
    for($i=0;$i<10;$i++)
        if(preg_match('/^'.$i.'{10}$/',$code))
            return false;
    for($i=0,$sum=0;$i<9;$i++)
        $sum+=((10-$i)*intval(substr($code, $i,1)));
    $ret=$sum%11;
    $parity=intval(substr($code, 9,1));
    if(($ret<2 &amp;&amp; $ret==$parity) || ($ret>=2 &amp;&amp; $ret==11-$parity)){
         return true;} else {
    return false;}
}
/**
 * Add the field to the checkout
 */
add_action( 'woocommerce_before_order_notes', 'national_code_field' );
function national_code_field( $checkout ) {
    echo '<div id="national_code_field"><h2>کد ملی</h2>';
    woocommerce_form_field( 'national_code', array(
        'type'          => 'text',
        'class'         => array('my-field-class form-row-wide'),
        'label'         => 'کدملی خود را وارد کنید',
        'placeholder'   => 'کدملی ... ',
        'required' => true,
        'validate' => array(), 
        ), $checkout->get_value( 'national_code' ));
    echo '</div>';
}
/**
 * Process the checkout
 */
add_action('woocommerce_checkout_process', 'national_code_field_process');
function national_code_field_process() {
    // Check if set, if its not set add an error.
    if ( ! $_POST['national_code'] ) {
        wc_add_notice('فیلد کد ملی نمی تواند خالی باشد.' , 'error' );}
        else
        {
          // Validates a phone number using a regular expression.
        if ( 10 != strlen( $_POST['national_code'] ) ) {
            wc_add_notice( 'کدملی باید   10 کاراکتری باشد', 'error' );
        } else {
          $n_code=$_POST['national_code'];
          $res=check_national_code($n_code);
if($res!=1)
wc_add_notice( 'کدملی وارد شده صحیح نمی‌باشد', 'error' );
        }}  
}
/**
 * Update the order meta with field value
 */
add_action( 'woocommerce_checkout_update_order_meta', 'national_code_field_update_order_meta' );
function national_code_field_update_order_meta( $order_id ) {
    if ( ! empty( $_POST['national_code'] ) ) {
        update_post_meta( $order_id, 'national_code', sanitize_text_field( $_POST['national_code'] ) );
    }
}
/**
 * Display field value on the order edit page
 */
add_action( 'woocommerce_admin_order_data_after_billing_address', 'national_code_field_display_admin_order_meta', 10, 1 );
function national_code_field_display_admin_order_meta($order){
    echo '<p><strong> کدملی :</strong> ' . get_post_meta( $order->id, 'national_code', true ) . '</p>';
}

چنانچه تمایل داشته باشید می تونیم این ویرایش و تغییرات رو با یک هزینه جزئی براتون انجام بدیم و این فیلد رو به فروشگاه شما اضافه کنیم. کافیه به تلگرام  skarimeh  پیام بدید و یا باشماره 09359556950  تماس بگیرید تا برای انجام این کار با شما هماهنگی لازم صورت بگیره.

 

(0) دیدگاه برای این پست ثبت شده
دیدگاه خود را بفرستید
  1. اولین نفری باشید که دیدگاه خود را ثبت می کند!
« چطور از فانکشن های ccs استفاده کنیم؟ + ویدئو تصویر چطور از فانکشن های  ccs  استفاده کنیم؟ + ویدئو
بهبود جی تی متریکس gtmerix »
Clicky