موقع ثبت سفارش شماره موبایل کاربران ثبت میشه ولی دیگه جایی برای ویرایش شماره موبایل ندارن
میخواستم ببینم چطوری میشه داخل صفحه:
site.com/my-account/edit-account/
که مشخصات کاربر هستش فیلد شماره موبایل هم اضافه میشه که بتونه ویرایش یا اضافه کنه.
سلام دوست عزیز
اگر دقت کرده باشید در ووکامرس بخش شماره موبایل مربوط به آدرس ها می باشد و پس از ثبت سفارش تنها از طریق ویرایش آدرس ها قابل تغییر می باشد. یعنی باید به مسیر زیر برید و آدرس صورت حساب را ویراش کنید تا امکان تغییر شماره موبایل را داشته باشید :
http://yoursite.com/my-account/edit-address
اما اگر با وردپرس و هوک های ووکامرس آشنایی دارید می توانید با درج کد php فیلد شماره موبایل را وارد بخش مورد نظر خود کنید تا کاربر بتواند در صفحه ویرایش مشخصات خود نیز شماره موبایل خود را ویرایش کند:
یعنی کد زیر را به فایل functions.php قالب خود اضافه کنید :
// Display the mobile phone field
add_action( ‘woocommerce_edit_account_form’, ‘add_billing_phone_to_edit_account_form’ ); // After existing fields
function add_billing_phone_to_edit_account_form() {
$user = wp_get_current_user();
?>
<p class=”woocommerce-form-row woocommerce-form-row–wide form-row form-row-wide”>
<label for=”billing_phone”><?php _e( ‘Mobile phone’, ‘woocommerce’ ); ?> <span class=”required”>*</span></label>
<input type=”text” class=”woocommerce-Input woocommerce-Input–phone input-text” name=”billing_phone” id=”billing_phone” value=”<?php echo esc_attr( $user->billing_phone ); ?>” />
</p>
<?php
}
// Check and validate the mobile phone
add_action( ‘woocommerce_save_account_details_errors’,’billing_phone_field_validation’, 20, 1 );
function billing_phone_field_validation( $args ){
if ( isset($_POST[‘billing_phone’]) && empty($_POST[‘billing_phone’]) )
$args->add( ‘error’, __( ‘Please fill in your Mobile phone’, ‘woocommerce’ ),”);
}
// Save the mobile phone value to user data
add_action( ‘woocommerce_save_account_details’, ‘my_account_saving_billing_phone’, 20, 1 );
function my_account_saving_billing_phone( $user_id ) {
if( isset($_POST[‘billing_phone’]) && ! empty($_POST[‘billing_phone’]) )
update_user_meta( $user_id, ‘billing_phone’, sanitize_text_field($_POST[‘billing_phone’]) );
}
دقت کنید قبل از درج کد در فایل functions.php حتما از آن یک فایل پشتیبان تهیه کنید تا در صورت بروز خطا سایت شما دچار مشکل نشود.
کدی که گفتین به فانکشن اضافه کردم
داخل پنل کاربری بخش موبایل اضافه شد ولی نکته ای که هست
شماره ای که قبلا یوزر برای خریدش ثبت کرده بوده داخل این کادر اضافه شده نمایش داده نمیشه.
فکر میکنم شماره ها موقع ثبت سفارش به اسم دیگه ای ذخیره میشن. چون اینجا نمیتونه بخونه شماره رو و باید از اول شماره اضافه کرد.
فیلد مربوط به شماره موبایل به اشتباه billing_mobile_phone
نوشته شده است، لطفا در کدهای بالا همه عبارت هایی که دارای billing_mobile_phone
هستند را به billing_phone
تغییر دهید.
من کد را در پاسخ قبلی ویرایش کردم و شما می توانید مجددا کد را کپی و استفاده نمایید.
اگر کد در اینجا خوانا نیست می توانید کد را از فایل زیر دانلود کنید که مرتب و بدون اشکال است:
لطفا وارد شوید یا ثبت نام کنید برای ارسال پاسخ