تابع wp_login_form در وردپرس
تابع wp_login_form() یکی از توابع داخلی و بسیار کاربردی در وردپرس است که به توسعهدهندگان این امکان را میدهد تا فرم ورود (Login Form) را بهصورت مستقیم در قالب (Theme) یا افزونههای خود نمایش دهند. این تابع از نسخه 3.0 وردپرس معرفی شده و برای ساخت فرم ورود بدون نیاز به صفحه پیشفرض wp-login.php استفاده میشود.
هدف از استفاده تابع wp_login_form()
هدف اصلی این تابع، سادهسازی فرآیند نمایش فرم ورود در هر مکان از سایت است. برای مثال، ممکن است بخواهید در صفحه اصلی یا سایدبار سایت یک فرم ورود ساده نمایش دهید تا کاربران بتوانند بدون مراجعه به صفحه جداگانه، وارد سایت شوند.
ساختار کلی تابع wp_login_form()
این تابع میتواند به دو شکل استفاده شود:
- بهصورت مستقیم بدون هیچ پارامتر:
wp_login_form(); - با استفاده از آرایه تنظیمات (پارامترهای سفارشیسازی)
مثال ساده از استفاده تابع
if ( ! is_user_logged_in() ) {
wp_login_form();
} else {
echo 'شما قبلاً وارد شدهاید.';
}
در مثال بالا، ابتدا بررسی میشود که آیا کاربر وارد شده است یا خیر. اگر وارد نشده باشد، فرم ورود نمایش داده میشود. در غیر این صورت، پیغامی مبنی بر ورود موفق کاربر نمایش داده میشود.
پارامترهای تابع wp_login_form()
تابع wp_login_form() یک آرایه از پارامترها را میپذیرد که هر کدام برای شخصیسازی بخش خاصی از فرم استفاده میشوند. در جدول زیر، مهمترین پارامترها را مشاهده میکنید:
| نام پارامتر | توضیح | مقدار پیشفرض |
|---|---|---|
echo | مشخص میکند آیا خروجی مستقیماً چاپ شود یا بهصورت رشته بازگردد. | true |
redirect | آدرس صفحهای که پس از ورود کاربر به آن منتقل میشود. | صفحه فعلی |
form_id | شناسه فرم HTML برای استفاده در CSS یا JS. | loginform |
label_username | برچسب (Label) فیلد نام کاربری. | Username |
label_password | برچسب فیلد رمز عبور. | Password |
label_remember | برچسب گزینه “مرا به خاطر بسپار”. | Remember Me |
label_log_in | متن دکمه ورود. | Log In |
remember | نمایش گزینه “مرا به خاطر بسپار”. | true |
نمونه کد با تنظیمات سفارشی
$args = array(
'echo' => true,
'remember' => true,
'redirect' => home_url('/dashboard/'),
'form_id' => 'custom-login-form',
'label_username' => 'نام کاربری شما',
'label_password' => 'رمز عبور',
'label_remember' => 'مرا به خاطر بسپار',
'label_log_in' => 'ورود به حساب کاربری',
'id_username' => 'user',
'id_password' => 'pass',
'id_remember' => 'rememberme',
'id_submit' => 'wp-submit',
);
wp_login_form( $args );
در این مثال، فرم ورود بهصورت کامل سفارشیسازی شده است. پس از ورود موفق، کاربر به صفحه داشبورد شخصی خود منتقل میشود. همچنین تمام برچسبها به زبان فارسی تغییر یافتهاند.
توضیح منطق کد بالا
آرایه $args مجموعهای از کلیدها و مقادیر است که رفتار فرم ورود را کنترل میکند. به کمک پارامتر redirect مسیر هدایت کاربر تعیین میشود. همچنین با تغییر شناسهها (IDs) میتوان کنترل بهتری بر استایل و عملکرد جاوااسکریپتی داشت.
نمایش فرم ورود فقط برای کاربران مهمان
گاهی نیاز دارید که فقط کاربران غیرعضو فرم ورود را ببینند. در این حالت میتوانید از شرط زیر استفاده کنید:
if ( ! is_user_logged_in() ) {
wp_login_form( array(
'redirect' => home_url('/member-area/')
) );
} else {
echo '<p>شما وارد سیستم هستید.</p>';
}
تابع is_user_logged_in() بررسی میکند که آیا کاربر در حال حاضر وارد سیستم است یا خیر. این روش باعث میشود تجربه کاربری بهتری ایجاد شود.
نمایش فرم ورود در ابزارکها یا صفحات خاص
شما میتوانید فرم ورود را با استفاده از شورتکد یا کد PHP در هر بخش از قالب خود درج کنید. برای مثال، در فایل sidebar.php:
<?php
if ( function_exists('wp_login_form') ) {
wp_login_form();
}
?>
همچنین میتوانید با استفاده از افزونههایی مانند “Code Snippets” این کد را بدون ویرایش فایلهای قالب در سایت خود قرار دهید.
سفارشیسازی استایل فرم ورود
برای تغییر ظاهر فرم، کافی است از form_id تعریفشده در CSS استفاده کنید:
#custom-login-form {
background: #f8f8f8;
padding: 20px;
border-radius: 10px;
}
#custom-login-form label {
font-weight: bold;
}
در این مثال، ظاهر فرم کاربرپسندتر شده و قابلیت شخصیسازی بالایی دارد.
تفاوت wp_login_form() با فرم پیشفرض ورود وردپرس
| ویژگی | wp_login_form() | صفحه wp-login.php |
|---|---|---|
| مکان نمایش | هر بخش از سایت | فقط صفحه ورود پیشفرض |
| قابلیت سفارشیسازی | بالا (از طریق پارامترها و CSS) | محدود |
| کنترل مسیر هدایت | بله، با redirect | به صورت پیشفرض به داشبورد |
بهترین روشهای استفاده (Best Practices)
- همیشه بررسی کنید که کاربر وارد سیستم شده است یا نه تا از نمایش فرم تکراری جلوگیری شود.
- از مقدار
falseبرای پارامترechoاستفاده کنید اگر میخواهید خروجی را در متغیر ذخیره و سپس چاپ کنید. - در صورت نیاز به کنترل امنیت، از فیلتر
login_redirectبرای بررسی مسیر هدایت استفاده کنید. - استایلها و برچسبها را متناسب با زبان و طراحی قالب خود تغییر دهید.
نمونه حرفهای با فیلتر login_redirect
function custom_login_redirect( $redirect_to, $request, $user ) {
if ( isset( $user->roles ) && is_array( $user->roles ) ) {
if ( in_array( 'administrator', $user->roles ) ) {
return admin_url();
} else {
return home_url('/member-dashboard/');
}
}
return $redirect_to;
}
add_filter( 'login_redirect', 'custom_login_redirect', 10, 3 );
در این کد، کاربران با نقش مدیر سایت (Administrator) به بخش مدیریت هدایت میشوند و سایر کاربران به داشبورد اختصاصی خود منتقل خواهند شد.
جمعبندی
تابع wp_login_form() ابزاری قدرتمند برای توسعهدهندگان وردپرس است که امکان نمایش فرم ورود در هر بخش از سایت را فراهم میکند. با سفارشیسازی صحیح و رعایت اصول امنیتی و طراحی، میتوان تجربه کاربری بهتری برای بازدیدکنندگان ایجاد کرد و کنترل کاملی بر فرآیند ورود کاربران داشت.
آیا این مطلب برای شما مفید بود ؟




