|

انجمن وردپرسدسته بندی: سوالات عمومیاضافه کردن فیلد موبایل به پروفایل ووکامرس
funmihan پرسیده شده 3 سال قبل
سلام و وقت بخیر موقع ثبت سفارش شماره موبایل کاربران ثبت میشه ولی دیگه جایی برای ویرایش شماره موبایل ندارن میخواستم ببینم چطوری میشه داخل صفحه: site.com/my-account/edit-account/ که مشخصات کاربر هستش فیلد شماره موبایل هم اضافه میشه که بتونه ویرایش یا اضافه کنه.
3 پاسخ
ادریس شاهی جان پاسخ داده شده3 سال قبل

سلام دوست عزیز

اگر دقت کرده باشید در ووکامرس بخش شماره موبایل مربوط به آدرس ها می باشد و پس از ثبت سفارش تنها از طریق ویرایش آدرس ها قابل تغییر می باشد. یعنی باید به مسیر زیر برید و آدرس صورت حساب را ویراش کنید تا امکان تغییر شماره موبایل را داشته باشید :

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 حتما از آن یک فایل پشتیبان تهیه کنید تا در صورت بروز خطا سایت شما دچار مشکل نشود.

 

funmihan پاسخ داده شده3 سال قبل
ممنونم از پاسختون کدی که گفتین به فانکشن اضافه کردم داخل پنل کاربری بخش موبایل اضافه شد ولی نکته ای که هست شماره ای که قبلا یوزر برای خریدش ثبت کرده بوده داخل این کادر اضافه شده نمایش داده نمیشه. فکر میکنم شماره ها موقع ثبت سفارش به اسم دیگه ای ذخیره میشن. چون اینجا نمیتونه بخونه شماره رو و باید از اول شماره اضافه کرد.
ادریس شاهی جان پاسخ داده شده3 سال قبل

فیلد مربوط به شماره موبایل به اشتباه billing_mobile_phone  نوشته شده است، لطفا در کدهای بالا همه عبارت هایی که دارای billing_mobile_phone  هستند را به billing_phone  تغییر دهید.
من کد را در پاسخ قبلی ویرایش کردم و شما می توانید مجددا کد را کپی و استفاده نمایید.

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

دانلود کد