رفتن به مطلب

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


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

با سلام خدمت همه از جمله استاد عزیزم جناب مهندس @Masih عزیزم

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

این قطعه کد را پیدا کردم ، درست کار میکنه

<?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 && $ret==$parity) || ($ret>=2 && $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>';
}

الان مشکل اینه که داخل پروفایل کاربری ، و قسمت فاکتور ووکامرس (افزونه تجاری فارسی از سایت ووکامرس فارسی) این کد ملی اضافه نشده 

ولی داخل سفارش ها قرار گرفته

 

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

 

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

اگر با افزونه Advanced Custom Fields PRO میشه اینکارو انجام داد ، لطفا بهم بگید ، اگر نه ، بهم بگید لطفا چطوری همین کد بالا رو برای داخل پروفایل کاربری قرار بدم و تست بگیرم؟

یه اموزش برای پروفایل کاربری پیدا کردم ولی متاسفانه باکس اپلود فایل هستش و امکان تایپ نداره ، از طرفی کلاس php اش با این کد ملی یکی نیست ، من php هیچی بلد نیستم و کامل منفجر شدم از بس به این کدها نگاه کردم

 

دوستان عزیز منتظر راهنمایی شما حرفه ای ها هستم 

ویرایش شده توسط raha.ab
لینک به دیدگاه
به اشتراک گذاری در سایت های دیگر

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