افزودن فیلد به لاگین

افزودن فیلد به لاگین و ثبت نام وردپرس؛ سیستم کد معرف

زمان انتشار: در تاریخ ۱۴۰۳/۰۴/۰۷ ساعت ۲۱:۰۰ | آموزش وب . بلاگ

یکی از بخش های پر استفاده در وردپرس، فرم لاگین و ثبت نام است. در این مطلب درباره روش افزودن فیلد به لاگین و ثبت نام وردپرس صحبت می کنیم.

وردپرس به عنوان یک سیستم مدیریت محتوا امکانات خوبی برای بخش کاربری خود دارد. برخی مدیران امکان عضویت کاربر در سایت را فراهم می کنند. دلایل مختلفی نیز برای عضویت کاربران در یک وب سایت وجود دارد. اما گاهی نیاز به بررسی یک مورد خاص در فرم ورود و یا ثبت نام کاربر را داریم. برای مثال در صورت ثبت یک کد خاص امکان ثبت نام وجود داشته باشد. و یا برای مثال دیگر کاربر در صورت ورود کد روزانه، امکان لاگین داشته باشد. به صورت کلی به این سیستم کد معرف نیز می گویند. البته که امکان دریافت و ثبت اطلاعات در دیتابیس نیز با کمی تغییرات وجود دارد. قبلا در مطلب «فرم ورود اختصاصی وردپرس» روش ایجاد یک فرم کاملا اختصاصی را یاد گرفتیم. اما در این مطلب به روش افزودن فیلد به لاگین و فرم عضویت پیش فرض وردپرس می پردازیم.

افزودن فیلد به لاگین

به صورت کلی برای افزودن فیلد به لاگین وردپرس دو مرحله وجود دارد. در مرحله اول باید فیلد مورد نظر خود را به فرم ورود اضافه کنیم. سپس در مرحله بعدی آن را چک و عملیات مورد نظر خود را بر روی آن اجرا کنیم. برای ایجاد تغییر در فرم ورود وردپرس باید از توابع و قلاب ها کمک بگیریم. برای این کار کد زیر را در فایل functions.php قالب و یا افزونه اختصاصی خود قرار می دهیم:

<?php
function tcCustomLoginField()
{
    echo '
    <p>
        <label for="custom_question">کد معرف</label>
        <input type="text" name="custom_question" id="custom_question" class="input" required="required">
    </p>';
}
add_action('login_form', 'tcCustomLoginField');
?>

در این کد با استفاده از قلاب login_form، یک فیلد ساده متنی با عنوان کد معرف به این فرم اضافه می کنیم. برای مرحله بعد باید این اطلاعات را هنگام اجرای فرم بررسی کنیم. در اینجا ما قصد راه اندازی سیستم کد معرف را داریم. پس باید مقدار این فیلد را با لیست خود تطبیق دهیم. برای این کار از قلاب wp_authenticate استفاده می کنیم:

<?php
function custom_login_question()
{
    if (isset($_POST['log']) && !empty($_POST['log'])) {
        $idCodes = ['samplecode1', 'samplecode2', 'samplecode3', 'samplecode4'];
        if (!in_array($_POST['custom_question'], $idCodes)) {
            wp_die('کد معرف وارد شده اشتباه است! <a href="' . $_SERVER['REQUEST_URI'] . '">بازگشت</a>');
        }
    }
}
add_action('wp_authenticate', 'custom_login_question');
?>

در کد بالا ابتدا یک آرایه از کد معرف های معتبر ایجاد کردیم. سپس فیلد کاربر را با این لیست تطبیق می دهیم. سپس در صورت عدم صحت کد، خطایی را نمایش می دهیم. در غیر این صورت عملیات لاگین ادامه و نام کاربری و کلمه عبور کاربر بررسی می شود.

فیلد اختصاصی فرم ثبت نام

افزودن فیلد سفارشی به فرم ثبت نام وردپرس نیز همانند افزودن فیلد به لاگین است. با این تفاوت که باید از قلاب های متفاوتی استفاده کنیم. مرحله اول، یعنی افزودن فیلد به فرم ثبت نام با استفاده از قلاب register_form انجام می شود. برای مثال دوباره قصد درج کد معرف را داریم:

<?php
function tcCustomLoginField()
{
    echo '
    <p>
        <label for="custom_question">کد معرف</label>
        <input type="text" name="custom_question" id="custom_question" class="input" required="required">
    </p>';
}
add_action('register_form', 'tcCustomLoginField');
?>

در کد بالا یک فیلد ساده با عنوان کد معرف به فرم عضویت وردپرس اضافه می شود. حال باید هنگام اجرای عملیات ثبت نام، کد خود را بررسی کنیم. برای این کار از قلاب registration_errors استفاده می کنیم:

<?php
add_filter('registration_errors', 'tcCustomLoginFieldCheck', 10, 3);
function tcCustomLoginFieldCheck($errors)
{
    $idCodes = ['samplecode1', 'samplecode2', 'samplecode3', 'samplecode4'];
    if (!in_array($_POST['custom_question'], $idCodes)) {
        $errors->add('policy_error', "<strong>خطا</strong>: کد معرف وارد شده معتبر نمی باشد");
        return $errors;
    }
    return $errors;
}
?>

در این کد نیز مانند حالت قبل، ابتدا یک آرایه از کد های معرف معتبر ایجاد کردیم. سپس مقدار وارد شده توسط کاربر را با این لیست تطبیق می دهیم. در صورت عدم صحت کد، وردپرس یک خطا به کاربر نمایش می دهد. افزودن فیلد به لاگین و یا فرم ثبت نام وردپرس کاربرد های زیادی دارد. در این مطلب ما از فیلد کد معرف استفاده کردیم. اما با شخصی سازی این کد ها امکان دریافت و ثبت اطلاعات در دیتابیس نیز وجود دارد.

ثبت دیدگاه جدید:

جهت رسیدگی به دیدگاه خود از زبان فارسی استفاده کنید!