Bright Moon

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

6 پست در این موضوع قرار دارد

ارسال شده در (ویرایش شده)

سلام

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

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

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

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

ویرایش شده در توسط Light Moon
0

به اشتراک گذاری این پست


لینک به پست

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 با نام دلخواه اضافه کنید و شرطی بگذارید که کاربر در اولین ورودش بعد از ثبت نام مجبور به تکمیل مشخصاتش شود

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

5

به اشتراک گذاری این پست


لینک به پست

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

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

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

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

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

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

ممنون

0

به اشتراک گذاری این پست


لینک به پست


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/

3

به اشتراک گذاری این پست


لینک به پست

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

سعی کردم خودم باقی راه رو برم اما نشد. گیج شدم :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 باید از میان عبارت های تعین شده انتخاب کرد؟

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

متشکرم

0

به اشتراک گذاری این پست


لینک به پست

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

برای فیلد با نام 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'];

4

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری