ساخت افزونه ثبت نام کاملا اختصاصی برای وردپرس
- مقالات آموزشی
- بروزرسانی شده در
اگر شما صاحب یک سایت اینترنتی هستید کاربرانی وجود دارند که سایت شما را دنبال میکنند. حال اگر این کاربران بخواهند در سایت شما عضو شوند شما میتوانید با ساخت افزونه ثبت نام برای وردپرس امکان عضویت در سایت خود را فراهم کنید. بهاینترتیب اطلاعات کاربران توسط این افزونه ثبت میشود. توجه داشته باشید که شما توسط این آموزش میتوانید فیلدهای دلخواه خود را در سایت خود ایجاد کنید.
توسط این افزونه شما میتوانید یک افزونه ورود به سایت برای سایت وردپرسی خود بهصورت اختصاصی ایجاد کنید و به این طریق سایت خود را در نظر مخاطبان خود حرفهای جلوه کنید. طبق آموزش زیر شما میتوانید بهراحتی این پلاگین را بسازید و از افزونه حرفهای ورود به سایت خود لذت ببرید.
آنچه در این مقاله میخوانید
افزونه وردپرس چیست؟
یکی از بخشهای مهم وردپرس افزونهها هستند. افزونهها به وردپرس امکانات فوقالعادهای را میدهدند. برخی از این افزونهها رایگان هستند که شما میتوانید آنها را از مخزن وردپرس دریافت کنید. برخی دیگر از افزونهها نیز بهصورت حرفهای کد نویسی شدهاند که شما باید آنها را خریداری کنید.
شما میتوانید با استفاده از قابلیتهایی که پلاگینها در اختیار شما قرار میدهدند یک سایت وردپرس حرفهای بسازید و از آن لذت برید. درواقع یکی از مواردی که باعث شده است که وردپرس به یک سیستم مدیریت محتوای قوی تبدیل شود امکاناتی است که پلاگینها در اختیار کاربران وردپرس قرار میدهدند.
ساخت افزونه ثبت نام برای وردپرس
امروزه در دنیای مجازی در بیشتر سایتها فرمهای ثبتنام و یا ورود و خروج کاربران را دیدهاید. همچنین تاکنون در سایتهای مختلفی ثبتنام کردهاید و با تعداد زیادی از اینگونه فرمها تابهحال سروکار داشته و فعالیت کردهاید. اگر شما تمایل به استفاده از کد نویسی نداشته باشید میتوانید از افزونههای مختلفی استفاده نمایید. بیشترین سایتها فرمهای خود با افزونههای مانند میهن پنل و دیگر افزونهها میسازند.
میهن پنل یکی از افزونههای ورود و ثبتنام است که توسط تیم میهن وردپرس بهصورت حرفهای طراحیشده است. شما میتوانید آن را از وبسایت ما بهراحتی دریافت کرده و از امکانات بینظیر آن بهره ببرید.
اما اگر شما تمایل داشته باشید که افزونه اختصاصی خود را در هنگام ورود کاربران سایتتان داشته باشید میتوانید با استفاده از این آموزش این کار را بهراحتی انجام دهید. این بار شما برای ساخت فرم دیگر نیاز به افزونه خاصی ندارید. شما قادر هستید با چند خط کد یک پنل ورود و ثبتنام برای سایت خود داشته باشید. با انجام این کار بدون نصب هیچ افزونهای شما دارای فرم ثبتنام خواهید شد.
همه شما مدیران سایت وردپرسی و یا کاربران برای دسترسی داشتن به صفحه پیشخوان خود باید وارد صفحه ورود خود شوید و در صفحه ورود، اطلاعات خود (یوزر و پسورد خود) را وارد کنید تا وارد پیشخوان سایت خود شوید.
صفحه ورود به پنل پیشخوان وردپرس مانند یک صفحه ثبتنام وردپرس است. که با کلیک بر روی ثبتنام در زیر بعضی از سایتها وجود دارد که میتوانید با آن در آن سایت ثبتنام کنید. اگر سایت شما دکمه ثبتنام ندارد از بخش تنظیمات میتوانید تیک گزینه هرکسی میتواند نامنویسی کند را کلیک کنید.
ساخت افزونه ثبت نام کاملا اختصاصی برای وردپرس
برای انجام این کار شما باید با کد نویسی آشنایی داشته باشید. سپس طبق آموزش زیر کدهای زیر را در فایل 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');
}
با استفاده از قطعه کد زیر میتوانید تنظیماتی را اعمال کنید که درصورتیکه نام کاربری کمتر از 4 کاراکتر باشد، کاربر با پیغام “نام کاربری کوتاه است و باید حداقل 4 کاراکتر باشد” مواجه شود.
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
);
}
شما میتوانید تصویر فرم ساختهشده با این کدها (نسخه انگلیسی) را در تصویر زیر مشاهده کنید.
برای فعالسازی افزونه ساخته شده زیر از شورت کد روبهرو استفاده نمایید [cr_custom_registration]. همچنین برای ثبت شورت کد نیز باید این کد را به 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();
}
همچنین برای نمایش با کد PHP از کد زیر در قالب سایت خود استفاده کنید.
<?php custom_registration_function(); ?>
امیدواریم با این آموزش بتوانید یک صفحه ثبتنام عالی برای سایت خود بسازید. ?
سلام خدمت شما
حالا یک سوال دارم چگونه میتوانیم همین کد هارو تبدیل به یک افزونه کنیم؟ مثلا چه فایلی باید بسازیم و این کدهارو توش قرار بدیم؟
درود بر شما آموزش ساخت افزونه اختصاصی رو توی سایت ببینید.
تشکر بسیار عالی بود