رفتن به مطلب

افزودن فیلد به فرم ثبت نام


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

سلام

میخوام چند فیلد دلخواه به پروفایل یوزر ها اضافه کنم.

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

تا اونجا که فهمیدم باید توی یوزر متا تغییر ایجاد کرد!

ممنون میشم راهنمایی کنید :)

ویرایش شده توسط Light Moon
لینک به ارسال

1. اضافه نمودن فیلد به صفحه پروفایل :


function modify_user_contact_methods( $user_contact ){
/* Add user contact methods */
$user_contact['skype'] = __('Skype Username');
$user_contact['twitter'] = __('Twitter Username');
/* Remove user contact methods */
unset($user_contact['aim']);
unset($user_contact['jabber']);
return $user_contact;
}
add_filter('user_contactmethods', 'modify_user_contact_methods');

در فایل functions.php بگذارید در این نمونه دو فیلد برای Skype و Twitter اضافه شده و دو فیلد aim و jabber از پروفایل حذف شده

http://wordpress.org...ch/user_contact

2. روش ساخت فرم دستی :

فرمش که مشخصه چیزی شبیه :



<form id="your-profile" action="" method="post">
<input type="hidden" name="user_id" value="<?php echo $current_user->user_ID;?>">
<input type="text" name="mobile" id="mobile" value="<?php echo get_user_meta( $user_id, "mobile", true);?>" >
...
<input type="submit" name="profile_submit">
</form>

یک فیلد هیدن برای انتقال آی دی کاربر به اکشن و فیلدهای دیگه هم مثل فیلد موبایل

و اکشنش :


<?php
global $user_ID, $user_identity, $user_level, $user_email, $user_login, $user_info, $user_first_name, $user_last_name, $user_url;
if (is_user_logged_in()) :
wp_get_current_user();
$user_id = $current_user->ID;
$meta = get_user_meta($user_id, 'profile');
$meta = $meta[0];
if(current_user_can('edit_posts') ) {
if(isset($_POST['profile_submit'])) :
if(isset($_POST['mobile'])) {
$mobile = $_POST['mobile'];
if(get_user_meta( $user_id, "mobile", true)) {
update_user_meta($user_id, 'mobile', $mobile);
} else {
add_user_meta($user_id, 'mobile', $mobile);
}


echo '<h4 class="alert">مشخصات شما به روز شد</h4>';
endif;
}
else :
$permalink = get_permalink();
echo wp_login_form($permalink);
endif;
?>

که در اصل شرط را با


get_user_meta( $user_id, "meta_key", true))

می سازید و به روز رسانی یا ایجاد متا را با


update_user_meta($user_id, 'meta_key', 'meta_value');
add_user_meta($user_id, 'meta_key', 'meta_value');

meta_key نامیست که برای متا و فیلدتون انتخاب می کنید و meta_value هم مقداریست که کاربر در فیلد قرار خواهد داد

نکته : فرم ثبت نام وردپرس را دستکاری نکنید چون با مشکل ایمیل تایید و ارسال رندم رمز مواجه می شوید

می توانید در فرم بالا یک فیلد hidden با نام دلخواه اضافه کنید و شرطی بگذارید که کاربر در اولین ورودش بعد از ثبت نام مجبور به تکمیل مشخصاتش شود

اگر خواستید اینکار را بکنید بفرمایید تا کدش را بگذارم

لینک به ارسال
  • 2 هفته بعد...

از وان روز چندین بار تلاش کردم و چون به نتیجه نرسیدم کار رو رها کردم...

* ایجاد فیلد جدید در پروفایل حل شد. متشکر

سوالی که برای ساخت فرم پیش اومد، این بود که برای اضافه کردن مواردی مثل نام و نام خانوادگی و رمز و ... چه مقادیری باید در خود فیلد بزارم؟! چه مقادیری فیلد ها رو به این موارد منتسب میکنه؟

اگر یک نمونه به صورت مثال موجود باشه فکر کنم خیلی بهم کمک میکنه. فرمی که شامل چند مورد پیشفرض وردپرس و یک مورد اضافه شده مثل اسکایپ(که توی توضیح قبلی اشاره شده) باشه.

و اکشن هم برای ثبت نام ...

ببخشید سوالم خیلی کلیه.

ممنون

لینک به ارسال


add_action(‘register_form’,’show_first_name_field’);
add_action(‘register_post’,’check_fields’,10,3);
add_action(‘user_register’, ‘register_extra_fields’);
function show_first_name_field(){
?>
<p>
<label>First Name<br/>
<input id=”user_email” type=”text” tabindex=”20″ size=”25″ value=”<?php echo $_POST['first']; ?>” name=”first”/>
</label>
</p>
<p>
<label>Last Name<br/>
<input id=”user_email” type=”text” tabindex=”20″ size=”25″ value=”<?php echo $_POST['last']; ?>” name=”last”/>
</label>
</p>
<?php
}
function check_fields($login, $email, $errors) {
global $firstname, $lastname;
if ($_POST['first'] == ”) {
$errors->add(‘empty_realname’, “<strong>ERROR</strong>: Please Enter in First Name”);
} else {
$firstname = $_POST['first'];
}
if ($_POST['last'] == ”) {
$errors->add(‘empty_realname’, “<strong>ERROR</strong>: Please Enter in Last Name”);
} else {
$firstname = $_POST['last'];
}
}
function register_extra_fields($user_id, $password=””, $meta=array()) {
$userdata = array();
$userdata['ID'] = $user_id;
$userdata['first_name'] = $_POST['first'];
$userdata['last_name'] = $_POST['last'];
wp_update_user($userdata);
}

http://tipsforwordpress.com/wordpress/add-custom-field-to-register-form/

لینک به ارسال

پارسای عزیز خیلی ممنون.

سعی کردم خودم باقی راه رو برم اما نشد. گیج شدم :blink:

ممکنه اول ساخت فرمش رو کمک کنید؟!

برای اضافه کردن مواردی مثل نام و نام خانوادگی و رمز و ... چه مقادیری باید در خود فیلد بزارم؟! چه مقادیری فیلد ها رو به این موارد منتسب میکنه؟

2. روش ساخت فرم دستی :

فرمش که مشخصه چیزی شبیه :



<form id="your-profile" action="" method="post">
<input type="hidden" name="user_id" value="<?php echo $current_user->user_ID;?>">
<input type="text" name="mobile" id="mobile" value="<?php echo get_user_meta( $user_id, "mobile", true);?>" >
...
<input type="submit" name="profile_submit">
</form>

بر اساس این کدها،برای درخواست نام این خط درسته؟


<input type="text" name="firstname" id="firstname" value="<?php echo get_user_meta( $user_id, "first_name", true);?>" >

و یا مقدار value باید از میان عبارت های تعین شده انتخاب کرد؟

برای نام خانوادگی و رمز عبور و موارد مشابه چطور؟

متشکرم

لینک به ارسال

به فرمی که جناب پارسا گذاشتند دقت کنید واضحه

برای فیلد با نام first مقدار value برابر با


<?php echo $_POST['first']; ?>

همین الگو را تا انتها پیش بگیرید

مهم معرفی درست اکشن است


function register_extra_fields($user_id, $password=””, $meta=array()) {
$userdata = array();
$userdata['ID'] = $user_id;
$userdata['first_name'] = $_POST['first'];
$userdata['last_name'] = $_POST['last'];

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...