ویژگی تصویر

تابع wp_login_form در وردپرس

  /  وردپرس   /  تابع wp_login_form در وردپرس
بنر تبلیغاتی الف
wp - wordpress - وردپرس

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

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: