raha.ab 9 ارسال شده در خرداد 27، 1401 گزارش اشتراک گذاری ارسال شده در خرداد 27، 1401 با سلام خدمت همه از جمله استاد عزیزم جناب مهندس @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 هیچی بلد نیستم و کامل منفجر شدم از بس به این کدها نگاه کردم دوستان عزیز منتظر راهنمایی شما حرفه ای ها هستم لینک به دیدگاه به اشتراک گذاری در سایت های دیگر More sharing options...
پست های پیشنهاد شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.