ساخت بخش ثبت نام اختصاصی در وردپرس با کد نویسی
ساخت بخش ثبت نام اختصاصی در وردپرس با کد نویسی
سلام ، حتما شما هم یک سایت وردپرسی پر از کاربر داری که اومدی توی این صفحه تا برای کاربران خود یک بخش ثبت نام کاملآ اختصاصی بسازی ، این بار می خواهم در میهن آکادمی به شما کمک کنیم که بتوانید بدون نیاز به نصب افزونه خودتان یک افزونه ای بنویسید که به صورت کامل اختصاصی باشد و کاربران شما بتوانند در سایت شما بخش ثبت نام اختصاصی داشته باشند پس در ادامه همراه ما باشید.
چرا افزونه ثبت نام بسازیم :
می دانید که افزونه های که در مخزن وردپرس ثبت شده اند ، اکثر به زبان های php نوشته شده است و زبان استفاده از برنامه ها هم انگلیسی می باشد و کار با آن افزونه های انگلیسی برای افرادی که با زبان انگلیسی آشنایی ندارند ممکن است سخت باشد یا افزونه های که پولی و حرفه ای هم هستند که باید برای استفاده از آن ها آن افزونه ها را از سایت اصلی خریداری کرد افزونه های مثل User Pro و یا افزونه دیگری مثل UPME که هم در مارکت های ایرانی موجود می باشد و هم در مارکت اصلی خارجی که می توانید خریداری کنید و استفاده کنید.
ساخت افزونه ثبت نام کاربران در وردپرس :
امروزه در دنیای مجازی در بیشتر سایت ها فرم های ورود و ثبت نام و خروج کاربران در همه سایت ها دیده ایم و همچنین تاکنون در سایت های مختلفی ثبت نام کرده اید و با تعداد زیادی از این گونه فرم ها تا به حال سر و کار داشته اید و فعالیت کرده اید و همانطور که شما می دانید در وردپرس دو روش برای اینکه یک امکان جدید ایجاد کنی وجود دارد
یکی اینکه شما می توانید از افزونه های مانند UserPro و یا از افزونه دیگری به نام UPME برای ساخت بخش ثبت نام کاربری استفاده کرد و یکی دیگر هم استفاده از کد نویسی می باشد که شما می توانید از طریق کد نویسی زیر بخش ثبت نام و ورود یا خروج کاربران سایت خود را بسازید و به کاربران خود نمایش دهید.
ساخت افزونه ثبت نام کاملآ اختصاصی برای سایت شما :
خب برای اینکه شما افزونه ثبت نام خود را به صورت کاملا اختصاصی بسازید نیاز است که کمی کد نویسی کنید و کمی با کد نویسی PHP آشنا باشید و اینجا شما باید وارد پنل مدیریت سایت خود شوید و از بخش نمایش وارد بخش ویرایشگر پوسته ها شوید و فایل Functions.php شوید و این کد های زیر را در فایل Functions.php قرار دهید و شروع به ساخت یک افزونه اختصاصی کنید
function registration_form( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio ) {
echo '
<style>
div {
margin-bottom:2px;
}
input{
margin-bottom:4px;
}
</style>
';
echo '
<form action="' . $_SERVER['REQUEST_URI'] . '" method="post">
<div>
<label for="username">نام کاربری <strong>*</strong></label>
<input type="text" name="username" value="' . ( isset( $_POST['username'] ) ? $username : null ) . '">
</div>
<div>
<label for="password">رمز عبور <strong>*</strong></label>
<input type="password" name="password" value="' . ( isset( $_POST['password'] ) ? $password : null ) . '">
</div>
<div>
<label for="email">ایمیل <strong>*</strong></label>
<input type="text" name="email" value="' . ( isset( $_POST['email']) ? $email : null ) . '">
</div>
<div>
<label for="website">وبسایت</label>
<input type="text" name="website" value="' . ( isset( $_POST['website']) ? $website : null ) . '">
</div>
<div>
<label for="firstname">نام</label>
<input type="text" name="fname" value="' . ( isset( $_POST['fname']) ? $first_name : null ) . '">
</div>
<div>
<label for="website">نام خانوادگی</label>
<input type="text" name="lname" value="' . ( isset( $_POST['lname']) ? $last_name : null ) . '">
</div>
<div>
<label for="nickname">لقب</label>
<input type="text" name="nickname" value="' . ( isset( $_POST['nickname']) ? $nickname : null ) . '">
</div>
<div>
<label for="bio">بیوگرافی</label>
<textarea name="bio">' . ( isset( $_POST['bio']) ? $bio : null ) . '</textarea>
</div>
<input type="submit" name="submit" value="ثبت نام"/>
</form>
';
}
فیلد های ثبت نام در بالا با متغیر های متفاوت به شما نمایش داده شده است که شما می توانید در کد زیر نمونه ای از آن کد ها را ببینید :
( isset( $_POST['lname'] ) ? $last_name : null )
اینجا تازه اول راه شماست ! هنوز فرم ثبت نام به مرحله نهایی نرسیده است و شما باید برای آن ها اعتبار دهید تا کاربران بتوانند حق ورود پیدا کنند و در نتیجه برای اینکه کاربران سایت بتوانند حق ورود به سایت را داشته باشند باید تابع Registration_validation که به کاربران به عنوان تابع حق ورود داده تا بتوانند فرم ثبت نام بسازید
ساخت و ایجاد تابع و عبور از بخش ثبت نام کاربران
{ function registration_validation( $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio )
برای اینکه شما بتوانید برای دسترسی به تابع ها استفاده کنید باید کلاس Wp-error برای دسترسی ها استفاده شود مانند کد زیر :
global $reg_errors;
$reg_errors = new WP_Error;
راستی صد البته شما نباید که فراموش کنید ، این است که باید اطلاع داشته باشید که هر زمانی یک نفر در سایت ثبت نام می کنید باید یک نام کاربری و به همراه پسورد و ایمیل داشته باشید و در این موضوع اجبار است و شما نباید ،این نکته را فراموش کنی
برای اجرا این کد ها باید چند قطعه کد خالی داشته باشید و به این ترتیب اگر خالی بود باید پیعام خطا به شما اعلام شود که مربوط به کلاس Wp-Error می باشد.
if ( empty( $username ) || empty( $password ) || empty( $email ) ) {
$reg_errors->add('field', 'Required form field is missing');
}
دیدی یه سری وقت ها در بعضی از وب سایت های وردپرسی می خواهید ثبت نام کنی و به دلایل کم بودن نام کاربر به شما اطلاعیه نمایش داده می شود که نام کاربری شما کوتاه می باشد ، شما هم می توانید به خط کد زیر این امکان را برای بخش ثبت نام در سایت خود پیاده سازی کنید
if ( 4 > strlen( $username ) ) {
$reg_errors->add( 'username_length', 'نام کاربری کوتاه است و باید حداقل 4 کاراکتر باشد' );
}
یا شما زمانی دیده اید که وارد یک سایت می شوید و می خواهید که ثبت نام کنید ولی به شما اطلاع می دهد که یک همچنین کاربری از قبل وجود داشته است شما هم می توانید به کمک کد زیر این قابلیت را برای بخش ثبت نام خودتان پیاده سازی کنید
if ( username_exists( $username ) )
$reg_errors->add('user_name', 'ببخشید این کاربر وجود دارد!');
مثلا بعضی بعضی وقت ها لازم است تا برای اینکه متوجه شویم تا یک نام کاربری در سایت صحیح نیست و اشتباه می باشد از کد نویسی زیر با استفاده از تابع Validation_Username استفاده می کنیم
if ( ! validate_username( $username ) ) {
$reg_errors->add( 'username_invalid', 'ببخشید اما نام کاربری صحیح نیست' );
}
بعد از اینکه ما نام کاربری خودمان را با امکاناتی که می خواهیم ساختیم باید کاری کنیم که پسورد زیر 5 کاراکتر را نپذیرد و برای اینکار باید از کد نویسی زیر استفاده کنیم
if ( 5 > strlen( $password ) ) { $reg_errors->add( 'password', 'طول رمز عبور حداقل باید 5 کاراکتر باشد' ); }
حالا دیگه باید ایمیل های که در سایت ما ثبت نام می کنند را بررسی کنیم که ایمیل فیک نباشد به همین دلیل باید کد زیر را در ادامه کد های افزونه خود قرار دهیم که با این کد معتبر بودن ایمیل را چک می کند
if ( !is_email( $email ) ) {
$reg_errors->add( 'email_invalid', 'ایمیل صحیح نیست' );
}
بعد از تایید شدن ایمیل توسط کد زیر ایمیل تایید می شود :
if ( email_exists( $email ) ) {
$reg_errors->add( 'email', 'ایمیل در حال استفاده است' );
}
در بعضی از وب سایت های که فرم ثبت نام حرفه ای دارند یک بخش دارند که مشخص می کنند فردی که آن مقاله را نوشته یا در سایت ثبت نام کرده بتواند آدرس سایت خود را ثبت کند تا نمایش داده شود و با کد زیر شما می توانید آدرس سایت ثبت شده را اعتبار سنجی کنی که آیا آدرس سایت صحیح است یا نه ؟
if ( ! empty( $website ) ) {
if ( ! filter_var( $website, FILTER_VALIDATE_URL ) ) {
$reg_errors->add( 'website', 'آدرس وبسایت صحیح نیست' );
}
}
برای نمایش تمام ارور ها و مشکل های از دست رفته می توانید با استفاده از کد زیر تمام ارور ها را نمایش دهید :
if ( is_wp_error( $reg_errors ) ) {
foreach ( $reg_errors->get_error_messages() as $error ) {
echo '<div>';
echo '<strong>خطا</strong>:';
echo $error . '<br/>';
echo '</div>';
}
}
خب این همه کد را به شما آموزش و معرفی کردیم درست ، ولی شما می توانید با قابلیت تابع ()Complete_Registration در این افزونه برای ثبت نام کاربر خود که زیاد استفاده و کارایی دارد ، ثبت نام کاربر در واقع به وسیله کد Wp_Insert_User انجام می شود و کد کامل آن هم کد زیر می باشد :
function complete_registration() {
global $reg_errors, $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
if ( 1 > count( $reg_errors->get_error_messages() ) ) {
$userdata = array(
'user_login' => $username,
'user_email' => $email,
'user_pass' => $password,
'user_url' => $website,
'first_name' => $first_name,
'last_name' => $last_name,
'nickname' => $nickname,
'description' => $bio,
);
$user = wp_insert_user( $userdata );
echo 'Registration complete. Goto <a href="' . get_site_url() . '/wp-login.php">login page</a>.';
}
}
طریق صحیح استفاده از تابع ()Complete_Registration
بعد از اینکه تابع و کد های مربوط به ()Complete_Registration را اضافه کردیم باید برای شما تابعی را اضافه کنیم که در کد زیر استفاده شده است که برای فرم استفاده می شود و کد آن را در اختیار شما قرار داده ایم و این کد برای تمامی کد های بالا ساخته شده است و استفاده زیادی دارد :
function custom_registration_function() {
if ( isset($_POST['submit'] ) ) {
registration_validation(
$_POST['username'],
$_POST['password'],
$_POST['email'],
$_POST['website'],
$_POST['fname'],
$_POST['lname'],
$_POST['nickname'],
$_POST['bio']
);
// sanitize user form input
global $username, $password, $email, $website, $first_name, $last_name, $nickname, $bio;
$username = sanitize_user( $_POST['username'] );
$password = esc_attr( $_POST['password'] );
$email = sanitize_email( $_POST['email'] );
$website = esc_url( $_POST['website'] );
$first_name = sanitize_text_field( $_POST['fname'] );
$last_name = sanitize_text_field( $_POST['lname'] );
$nickname = sanitize_text_field( $_POST['nickname'] );
$bio = esc_textarea( $_POST['bio'] );
// call @function complete_registration to create the user
// only when no WP_error is found
complete_registration(
$username,
$password,
$email,
$website,
$first_name,
$last_name,
$nickname,
$bio
);
}
registration_form(
$username,
$password,
$email,
$website,
$first_name,
$last_name,
$nickname,
$bio
);
}
شما برای فعالسازی این افزونه ساخته شده باید کد زیر را در همان فایل Functions.php سایت خود اضافه کنید :
// Register a new shortcode: [cr_custom_registration]
add_shortcode( 'cr_custom_registration', 'custom_registration_shortcode' );
// The callback function that will replace [book]
function custom_registration_shortcode() {
ob_start();
custom_registration_function();
return ob_get_clean();
}
خب حالا افزونه فعال شد ولی شما برای اینکه افزونه را بتوانید نمایش دهید باید از شورت کد مخصوص خود افزونه استفاده کنید که شورت کد زیر می باشد :
[cr_custom_registration]
همچنین برای اینکه بخواهید فرم ثبت نام خود را با کد PHP نمایش دهید و در سایت خود استفاده کنید شما باید کد زیر را در قالب سایت قرار دهید :
<?php custom_registration_function(); ?>
امیدواریم که با این آموزش یکی از بهترین صفحه های ثبت نام در سایت خود را داشته باشید ! موفق و سربلند باشید 🙂