رفتن به مطلب

ساخت فرم نام نویسی کامل در وردپرس


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

 

1408074122631.jpg

 

 

 

 

همانطور که میدانید مهمترین بخش در ساخت یک فرم نام نویسی، برقراری ارتباط با پایگاه داده است. در این آموزش ما با استفاده از تابع ()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 ساخته و پس از انتقال کدها آن را در پوشه اصلی قالب خود بارگذاری کنید. سپس به بخش افزودن برگه ها رفته و در تب "صفات برگه" قالب فرم عضویت را انتخاب کرده و آن را منتشر کنید.

 

 

 

لینک ها تنها برای اعضای سایت قابل نمایش است.

 

 

 

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

  • 9 ماه پیش ...
سلام

 

کسی فقط می کنه کمکم من بکنه ؟

 

یه تغییراتی در قالب

 

mahdimedia.ir مهدی مدیا

 

دوست عزیز پست تون رو در تاپیک مربوطه بیان کنید نه در تاپیک های دیگر

 

 

متشکرم:heart:

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

  • 1 month پیش ...

مرسی از آموزش کاملتون من از این افزونه استفاده می کنم واقعا عالیه

لینک ها تنها برای اعضای سایت قابل نمایش است.

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

مهمان
این موضوع برای عدم ارسال قفل گردیده است.
×
×
  • اضافه کردن...