در این پست از بیست اسکریپت، آموزشی را آماده کرده ایم تا با کمک آن به سادگی هرچه تمام تر یک فرم عضویت ساده و کامل را در سایت خود پایه ریزی کنید.
همانطور که میدانید مهمترین بخش در ساخت یک فرم نام نویسی، برقراری ارتباط با پایگاه داده است. در این آموزش ما با استفاده از تابع ()wp_insert_user قادر خواهیم بود تا اطلاعات ارسالی توسط کاربر را در پایگاه داده ثبت کنیم. (جهت مطالعه مستندات بیشتر اینجا کلیک کنید)
فرم کلی تابع wp_insert_user:
<?php wp_insert_user( $userdata ) ?>
اما پیش از استفاده از تابع بالا و کدنویسی سمت سرور، ابتدا لازم است تا یک فرم با تعدادی فیلد ورودی (input) و یک دکمه ارسال (button) بسازیم. این کار را ما به صورت زیر انجام دادیم:
<form method="post"> <h3>آیا قبلا عضو نشده اید؟<br/> نام نویسی کنید.</h3> <p><label>نام</label></p> <p><input type="text" value="" name="first_name" id="first_name" /></p> <p><label>نام خانوادگی</label></p> <p><input type="text" value="" name="last_name" id="last_name" /></p> <p><label>ایمیل</label></p> <p><input type="text" value="" name="email" id="email" /></p> <p><label>نام کاربری</label></p> <p><input type="text" value="" name="username" id="username" /></p> <p><label>رمز عبور</label></p> <p><input type="password" value="" name="pwd1" id="pwd1" /></p> <p><label>تکرار رمز عبور</label></p> <p><input type="password" value="" name="pwd2" id="pwd2" /></p> <button type="submit" name="btnregister" >بفرست!</button> <input type="hidden" name="task" value="register" /> </form>
پس از انجام مرحله قبل، می رسیم به مهمترین بخش کار، یعنی دریافت و پردازش اطلاعات ارسالی از فرم html بالا.
برای این منظور از قطعه کد پی اچ پی زیر استفاده میکنیم. این اسکریپت ضمن دریافت و پردازش اطلاعات با داشتن تعدادی دستور شرطی، تک تک مراحل کار را کنترل کرده و پیغام هایی را در هر شرط مشخص می کند. ( در مرحله بعد، از این پیغام ها با شرط خالی نبودن متغیرها ( مثلا: ! empty($success) ) استفاده خواهیم کرد)
<?php $err = ''; $success = ''; global $wpdb, $PasswordHash, $current_user, $user_ID; if(isset($_POST['task']) && $_POST['task'] == 'register' ) { $pwd1 = $wpdb->escape(trim($_POST['pwd1'])); $pwd2 = $wpdb->escape(trim($_POST['pwd2'])); $first_name = $wpdb->escape(trim($_POST['first_name'])); $last_name = $wpdb->escape(trim($_POST['last_name'])); $email = $wpdb->escape(trim($_POST['email'])); $username = $wpdb->escape(trim($_POST['username'])); if( $email == "" || $pwd1 == "" || $pwd2 == "" || $username == "" || $first_name == "" || $last_name == "") { $err = 'لطفا تمامی فیلدهای الزامی را تکمیل نمایید.'; } else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { $err = 'آدرس ایمیل نامعتبر است!'; } else if(email_exists($email) ) { $err = 'این ایمیل قبلا در سایت ثبت شده است.'; } else if($pwd1 <> $pwd2 ){ $err = 'کلمات عبور با یکدیگر مطابقت ندارند.'; } else { $user_id = wp_insert_user( array ('first_name' => apply_filters('pre_user_first_name', $first_name), 'last_name' => apply_filters('pre_user_last_name', $last_name), 'user_pass' => apply_filters('pre_user_user_pass', $pwd1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) ); if( is_wp_error($user_id) ) { $err = 'خطایی در ارسال درخواست نام نویسی شما رخ داده است!'; } else { do_action('user_register', $user_id); $success = 'نام نویسی شما با موفقیت به اتمام رسید، از شما ممنویم.'; } } } ?>
حال، کار ساخت فرم و ارسال اطلاعات به پایان رسیده است. اما به عنوان آخرین مرحله و نمایش یک نمونه ی قابل آزمایش، ما از این کدها در یک تمپلیت قالب برگه (سازگار با پوسته TwentyTwelve وردپرس) استفاده کردیم.
در این بخش جدای از کدها بالا:
- از یک استایل جهت زیبا سازی بیشتر فیلدهای ورودی.
- برچسب ها و توابع لازم به کار رفته در پوسته 2012.
- و یک دایو مربوط به چاپ پیغام های ضروری که در بالا اشاره شد.
استفاده شده است.
* البته این را هم متذکر می شویم که این تنها روش نبوده و شما می توانید از فرم بالا در هر مکان و با هر روشی استفاده نمایید.
اما اگر قصد استفاده از آن را به صورت قالب برگه در پوسته خود دارید، کافی است تا با چند ویرایش ساده در برچسب ها و نام کلاس ها یا آی دی ها آن را با پوسته خود سازگار کنید.
<?php /* Template Name: فرم عضویت */ ?> <style> form label { display: block; font-weight: bold; } form input[type="text"], form input[type="password"] { border: 1px solid #F0F0F0; border-radius: 5px; -moz-box-shadow: 1px 1px #FFF, 1px 1px 1px #aaa inset; -webkit-box-shadow: 1px 1px #FFF, 1px 1px 1px #aaa inset; box-shadow: 1px 1px #FFF, 1px 1px 1px #aaa inset; padding: 10px 7px; width: 50%; background: #FFF; margin-top: 5px; font-family: Tahoma, Geneva, sans-serif; font-size: 15px; font-weight: bold; color: #666; } </style> <?php get_header(); ?> <?php $err = ''; $success = ''; global $wpdb, $PasswordHash, $current_user, $user_ID; if(isset($_POST['task']) && $_POST['task'] == 'register' ) { $pwd1 = $wpdb->escape(trim($_POST['pwd1'])); $pwd2 = $wpdb->escape(trim($_POST['pwd2'])); $first_name = $wpdb->escape(trim($_POST['first_name'])); $last_name = $wpdb->escape(trim($_POST['last_name'])); $email = $wpdb->escape(trim($_POST['email'])); $username = $wpdb->escape(trim($_POST['username'])); if( $email == "" || $pwd1 == "" || $pwd2 == "" || $username == "" || $first_name == "" || $last_name == "") { $err = 'لطفا تمامی فیلدهای الزامی را تکمیل نمایید.'; } else if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { $err = 'آدرس ایمیل نامعتبر است!'; } else if(email_exists($email) ) { $err = 'این ایمیل قبلا در سایت ثبت شده است.'; } else if($pwd1 <> $pwd2 ){ $err = 'کلمات عبور با یکدیگر مطابقت ندارند.'; } else { $user_id = wp_insert_user( array ('first_name' => apply_filters('pre_user_first_name', $first_name), 'last_name' => apply_filters('pre_user_last_name', $last_name), 'user_pass' => apply_filters('pre_user_user_pass', $pwd1), 'user_login' => apply_filters('pre_user_user_login', $username), 'user_email' => apply_filters('pre_user_user_email', $email), 'role' => 'subscriber' ) ); if( is_wp_error($user_id) ) { $err = 'خطایی در ارسال درخواست نام نویسی شما رخ داده است!'; } else { do_action('user_register', $user_id); $success = 'نام نویسی شما با موفقیت به اتمام رسید، از شما ممنویم.'; } } } ?> <div id="primary" class="site-content"> <div id="content" role="main"> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>> <header class="entry-header"> <h1 class="entry-title"><?php the_title(); ?></h1> </header> <div class="entry-content"> <?php the_content(); ?> <div id="message"> <?php if(! empty($err) ) : echo '<p class="error">'.$err.'</p>'; endif; ?> <?php if(! empty($success) ) : echo '<p class="error">'.$success.'</p>'; endif; ?> </div> <form method="post"> <h4>آیا قبلا عضو نشده اید؟<br/> نام نویسی کنید.</h4> <p> <label>نام</label> </p> <p> <input type="text" value="" name="first_name" id="first_name" /> </p> <p> <label>نام خانوادگی</label> </p> <p> <input type="text" value="" name="last_name" id="last_name" /> </p> <p> <label>ایمیل</label> </p> <p> <input type="text" value="" name="email" id="email" /> </p> <p> <label>نام کاربری</label> </p> <p> <input type="text" value="" name="username" id="username" /> </p> <p> <label>رمز عبور</label> </p> <p> <input type="password" value="" name="pwd1" id="pwd1" /> </p> <p> <label>تکرار رمز عبور</label> </p> <p> <input type="password" value="" name="pwd2" id="pwd2" /> </p> <button type="submit" name="btnregister" class="button" >بفرست!</button> <input type="hidden" name="task" value="register" /> </form> </div> <footer class="entry-meta"> <?php edit_post_link( __( 'Edit', 'twentytwelve' ), '<span class="edit-link">', '</span>' ); ?> </footer> <!-- .entry-meta --> </article> <?php endwhile; ?> <?php endif; ?> </div> </div> <?php get_sidebar(); ?> <?php get_footer(); ?>
جهت استفاده از کد تکمیلی بالا، یک فایل php ساخته و پس از انتقال کدها آن را در پوشه اصلی قالب خود بارگذاری کنید. سپس به بخش افزودن برگه ها رفته و در تب “صفات برگه” قالب فرم عضویت را انتخاب کرده و آن را منتشر کنید.
- مشکلی دارید؟ جواب خود را در پست فروم بگیرید
- منبع : بیست اسکریپت لطفا رعایت کنید
