karimi 40 ارسال شده در تیر 00 گزارش بازنشر ارسال شده در تیر 00 درود دوستان من برای ارسال پستی به کد ملی خریدار نیاز دارم، بر همین اساس با کدی که تو نت پیدا کردم این مشکل رو حل کردم. محصولات سایت من دو دسته هستند دانلودی و ارسالی و قاعدتا برای محصولات دانلودی نیازی به کد ملی ندارم به کمک کدی که اون رو هم تو نت پیدا کردم، شرط گذاشتم که اگر دانلودی بود یه سری فیلد از جمله کد ملی رو نشون نده. ظاهرا همه چیز خوبه، ولی وقتی کاربر برای خرید میخواد تو سایت نامنویسی هم انجام بده، ارور میده که کد ملی وارد شده صحیح نیست در حالیکه اصلا فیلدش نمایش داده نمیشه. من الان دو تا کار میتونم انجام بده یا کلا قید کد ملی رو بزنم که در اونصورت باید برای هر سفارش با خریدار تماس بگیرم و کد ملی رو درخواست کنم و یا اون رو از حالت اجباری در بیارم که باز هم معلوم نیست کاربر وارد کنه یا نه. 1- کسی هست بتونه تو کد شرط بزاره که اگر خرید دانلودی بود کد ملی رو چک نکنه؟ 2- با توجه به اینکه فیلد کد ملی به صورت دستی اضافه شده، تو ایمیلی که برام ارسال میشه و سفارش رو نمایش میده، کد ملی وجود نداره و باید برای دیدن اون لاگین کنم و از تو سفارشات بررسی کنم. کدی هست که بشه اون رو هم به ایمیل ارسالی اضافه کرد؟ در ادامه کدها رو هم مینویسم: افزودن کد ملی: add_filter('woocommerce_checkout_fields', 'custom_woocommerce_billing_fields'); function custom_woocommerce_billing_fields($fields) { $fields['billing']['billing_ncode'] = array( 'label' =>'کد ملی', 'placeholder' =>'', 'required' => True, 'clear' => false, 'type' => 'text', ); return $fields; } add_action('woocommerce_checkout_process', 'wh_phoneValidateCheckoutFields'); function wh_phoneValidateCheckoutFields() { $billing_ncode = filter_input(INPUT_POST, 'billing_ncode'); if(!preg_match('/^[0-9]{10}$/',$billing_ncode)) wc_add_notice(__(' کدملی وارد شده کمتر از ده رقم است، لطفا کد ملی را صحیح وارد نمایید '), 'error'); for($i=0;$i<10;$i++) if(preg_match('/^'.$i.'{10}$/',$billing_ncode)) wc_add_notice(__(' کدملی نامعتبر است، لطفا کد ملی را صحیح وارد نمایید .'), 'error'); for($i=0,$sum=0;$i<9;$i++) $sum+=((10-$i)*intval(substr($billing_ncode, $i,1))); $ret=$sum%11; $parity=intval(substr($billing_ncode, 9,1)); if(($ret<2 && $ret==$parity) || ($ret>=2 && $ret==11-$parity)) return true; wc_add_notice(__(' کدملی نامعتبر است، لطفا کد ملی را صحیح وارد نمایید .'), 'error'); } add_action( 'woocommerce_checkout_update_order_meta', 'my_custom_checkout_field_update_order_meta' ); function my_custom_checkout_field_update_order_meta( $order_id ) { if ( ! empty( $_POST['billing_ncode'] ) ) { update_post_meta( $order_id, 'billing_ncode', sanitize_text_field( $_POST['billing_ncode'] ) ); } } add_action( 'woocommerce_admin_order_data_after_billing_address', 'my_custom_checkout_field_display_admin_order_meta', 10, 1 ); function my_custom_checkout_field_display_admin_order_meta($order){ echo '<p><strong>'.__('کد ملی').':</strong> <br/>' . get_post_meta( $order->get_id(), 'billing_ncode', true ) . '</p>'; } حذف فیلدهای اضافه در فایل دانلودی: function kanithemes_hide_checkout_fields_for_virtual_products( $fields ) { $only_virtual = true; foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { // Check if there are non-virtual products if ( ! $cart_item['data']->is_virtual() ) $only_virtual = false; } if( $only_virtual ) { unset($fields['billing']['billing_company']); 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_ncode']); add_filter( 'woocommerce_enable_order_notes_field', '__return_false' ); } return $fields; } add_filter( 'woocommerce_checkout_fields' , 'kanithemes_hide_checkout_fields_for_virtual_products' ); با سپاس از همه دوستان نقل قول لینک به ارسال
karimi 40 ارسال شده در تیر 00 مالک گزارش بازنشر ارسال شده در تیر 00 مشکل رو حل کردم، اگر کس دیگهای هم این مشکل رو داره این بخش از کد رو حذف کنه: if(!preg_match('/^[0-9]{10}$/',$billing_ncode)) wc_add_notice(__(' کدملی وارد شده کمتر از ده رقم است، لطفا کد ملی را صحیح وارد نمایید '), 'error'); مربوط به کد ملی 1 نقل قول لینک به ارسال
karimi 40 ارسال شده در مرداد 00 مالک گزارش بازنشر ارسال شده در مرداد 00 دوستان مشکل دوم رو هنوز دارم اگر کسی راه حلی داره لطفا بگه. 2- با توجه به اینکه فیلد کد ملی به صورت دستی اضافه شده، تو ایمیلی که برام ارسال میشه و سفارش رو نمایش میده، کد ملی وجود نداره و باید برای دیدن اون لاگین کنم و از تو سفارشات بررسی کنم. کدی هست که بشه اون رو هم به ایمیل ارسالی اضافه کرد؟ نقل قول لینک به ارسال
zarcod 59 ارسال شده در مرداد 00 گزارش بازنشر ارسال شده در مرداد 00 در در ۱۴۰۰/۵/۳ در 10:00، karimi گفته است : 2- با توجه به اینکه فیلد کد ملی به صورت دستی اضافه شده، تو ایمیلی که برام ارسال میشه و سفارش رو نمایش میده، کد ملی وجود نداره و باید برای دیدن اون لاگین کنم و از تو سفارشات بررسی کنم. کدی هست که بشه اون رو هم به ایمیل ارسالی اضافه کرد؟ سلام کد را داخل فایل فانکشن بگذارید add_filter('woocommerce_email_order_meta_keys', 'my_custom_meta_keys'); function my_custom_meta_keys( $keys ) { $keys[] = 'billing_ncode'; return $keys; } امیدوارم مشکل حل شود 1 نقل قول لینک به ارسال
karimi 40 ارسال شده در مرداد 00 مالک گزارش بازنشر ارسال شده در مرداد 00 با سپاس از شما، بله کار کرد و کد ملی رو برام فرستاد. فقط یک مورد رو میخوام بدونم. فایل css ایمیل ارسالی کدوم بخش که بتونم بهش استایل بدم؟ نقل قول لینک به ارسال
zarcod 59 ارسال شده در مرداد 00 گزارش بازنشر ارسال شده در مرداد 00 در 23 دقیقه قبل، karimi گفته است : با سپاس از شما، بله کار کرد و کد ملی رو برام فرستاد. فقط یک مورد رو میخوام بدونم. فایل css ایمیل ارسالی کدوم بخش که بتونم بهش استایل بدم؟ خوشحالم که مشکل رفع شد. احتمالا از طریق فایل استایل بشه اعمال کرد . جناب asadiy4n بهتر میتوانند راهنمایی نمایند 1 نقل قول لینک به ارسال
karimi 40 ارسال شده در مرداد 00 مالک گزارش بازنشر ارسال شده در مرداد 00 (ویرایش شده) در 22 ساعت قبل، amirhosseinkavianfardf گفته است : ممنون از پاسخگوییتون امکانش هست یکم بیشتر توضیح بدید ممنونم الان به صورت زیر دیده میشه میخوام اگه بشه تو بخش آدرس صورتحساب نمایش داده بشه. ویرایش شده مرداد 00 توسط karimi نقل قول لینک به ارسال
zarcod 59 ارسال شده در مرداد 00 گزارش بازنشر ارسال شده در مرداد 00 در مرور گر کروم روی همین قسمت راست کلیک کنید Inspect را انتخاب کنید مرورگرهای دیگه هم دارن فقط اسمش کمی فرق داره . بعد از سمت راست میتوانید کلاس قسمت مورد نظر را ببینید و تغییر دهید سپس کل کلاس را که تغییر دادید به فایل style.css اضافه کنید نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .