ساخت فرم لاگین (ورود کاربران) با گرویتی فرم – بروز شده اجباری
آپدیت شده در تاریخ 10 خرداد 96: دوستانی که از این کد استفاده میکردند حتما کد زیر رو جایگزینش کنن تا پسورد وارد شده توسط کاربر قبل از ذخیره در دیتابیس به صورت ستاره در بیاد.

با سلام
گرویتی فرم توسط افزونه User Registration این امکان رو به کاربران میده که بتونن از طریق پر کردن فرم گرویتی به عضویت وردپرس هم در بیان.

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

خب ابتدا کد زیر رو به functions.php قالب اضافه کنید.

//------https://gravityforms.ir/wp-content/uploads/saman-1.jpg forms --------------------
add_filter("gform_field_validation", "login_validate_field", 10, 4);
function login_validate_field($result, $value, $form, $field)
{
 
    global $user;
 
    if ($field['cssClass'] === 'username-login') {
        $user = get_user_by('login', $value);
        if (empty($user->user_login)) {
            $result["is_valid"] = false;
            $result["message"] = "نام کاربری وارد شده اشتباه است.";
        }
    }
 
    if ($field['cssClass'] === 'password-login') {
        $value = trim($value);
        if (!empty($user) && !empty($user->user_login) && !empty($user->ID)) {
 
            $sign = wp_signon(array(
                'user_login' => $user->user_login,
                'user_password' => $value,
            ));
 
            if (is_wp_error($sign)) {
                $result["is_valid"] = false;
                $result["message"] = $sign->get_error_message();
            } else if (wp_check_password($value, $user->data->user_pass, $user->ID)) {
                wp_set_current_user($sign->ID);
            } else {
                $result["is_valid"] = false;
                $result["message"] = 'کلمه عبور وارد شده عبور صحیح نیست.';
            }
        } else {
            $result["is_valid"] = false;
            $result["message"] = "نام کاربری وارد شده اشتباه است.";
        }
    }
 
    return $result;
}
add_filter('gform_save_field_value', 'hide_password_field_value', 10, 4);
function hide_password_field_value( $value, $lead, $field, $form )
{
 
    $field = is_object($field) ? $field : (object)$field;
 
    if ( !empty($field->cssClass) && $field->cssClass === 'password-login' ) {
        $value = '**********';
    }
 
    return $value;
}

حالا 2 تا فیلد متنی جدید به فرمتون اضافه کنید و عنوان یکی رو به صورت “نام کاربری” و عنوان دیگری رو به صورت “کلمه عبور” قرار بدید.

به تب نمایش این 2 فیلد برید و توی قسمت کلاس css سفارشی برای فیلد نام کاربری عبارت username-login رو وارد کنید و توی کلاس css سفارشی برای کلمه عبارت password-login رو وارد کنید.

به این post امتیاز دهید

48 پاسخ

  1. میشه بگید به کدام فایل functions.php ؟؟
    چون چنین فایلی تو قالب وردپرس زیاده. آدرس فایل رو هم اگه بگید ممنون
    چون من چند جا انداختم کار نداد.

  2. سلام،
    من برای ثبت‌نام و نمایش پروفایل کاربران سایتم از افزونه Ultimate Member استفاده میکنم
    ولی چون بخش طراحی فرم ثبت‌نام این افزونه کمی ضعیفه می‌خواستم فقط برای قسمت ثبت‌نام از افزونه User Registration استفاده کنم و برای قسمت نمایش و مدیریت پروفایل کاربران از همون افزونه Ultimate Member استفاده کنم.
    میخواستم بدونم که:
    1- این دوتا افزونه با هم تداخلی ندارند؟
    2- میشه اطلاعات فیلدهای یک فرم عضویت که با Gravity Forms طراحی شده رو از طریق افزونه Ultimate Member در صفحه پروفایل کاربر نمایش داد؟

  3. سلام
    من تمام مراحل رفتم ولی پیغام برای هر دو فیلد اینه که نام کاربری اشتباه می باشد
    در صورتی که قصد من ایجاد یوزر بود نه ورود به سایت

  4. سلام میخواستم بپرسم میشه با یه فرم ثبت نام کاربر یوزر پس خود را انتخاب کند اما ثبت نهایی نشود و بعد از تایید مدیر سایت مبنی بر تایید اطلاعات(مانند کد دانشجویی و کد ملی و… )ان یوزر با یک دکمه تایید و فعال شود؟

    هم اکنون این ساخت یوزر به صورت دستی برای کاربر ساخته ساخته میشود

  5. سلام . واقعا ممنون از این مطالب مفید .
    ولی به نظرم اکشن اول درست صدا زده نشده .چون موقع ثبت نام این ارور “نام کاربری وارد شده اشتباه است.” را میده.
    مورد دیگه که می خواهم بپرسم چرا کاربر که فرم را ثبت می کنه به عنوان یوزر وردپرس ثبت نمی شه؟ از user registration استفاده می کنم ولی نمی دونم تنظیم خاصی داره .فقط نشون می ده که این فرم را تکمیل کرده؟؟؟
    ممنون اگر راهنمایی کنید

    1. سلام و احترام
      خودم دارم از همین کد توی یه سایتی بعنوان فرم لاگین استفاده میکنم و مشکلی ندیدم.
      در مورد ثبت نام هم بله .. بعد از نصب افزونه USER registration باید تنظیماتش رو از طریق زیر منوی اون فرم تنظیم کنید.

  6. با سلام
    ببخشید چند تا سوال داشتم ممنون میشم کمک کنید
    اول این که چطور میشه بعد از زدن ارسال یه فرم سفارشی درست کرد و در قالب اون متن به کاربر نمایش داده بشه مثلا اطلاعاتی که در فرم وارد کرده براش ارسال بشه
    2 ) یا یه فرم دیگه که مثلا بعد از ارسال یه کارت ورود به جلسه با کد پیگیری که بتونه با وارد کردن اون کد اگر پیامی در پنل به کاربر فرستادیم بخونه و یا این که بتونه دوباره اون کارت ورود به جلسه رو پرینت بگیره و عکسشم تو کارت قرار بگیره ؟
    3 ) آیا میشه اطلاعاتی که در فرم وارد میکنه رو فقط مثلا نام نام خانوادگی کد پیگیری که دیگه سیستم میزنه و رشته تحصیلی و غیره رو که ما میخواهیم به کاربر در قالب یه کارت ورود نشون بده ؟
    4 ) کوپن تخفیف میشه اضافه کرد که یکبار مصرف باشه ؟ مثلا فرم رو پر کرد موقع پرداخت کوپن تخفیفشم وارد کنه ؟
    5 ) میشه از اطلاعات وارد شده خروجی اکسل گرفت ؟
    6 ) گراویتی فرم قابلیت اینو داره که 5 هزار نفرو که پرداخت انجام میدن بدون اختلال ذخیره کنه؟
    7 ) درگاه پرداخت بانک صادرات شما دارین ؟
    8 ) این قابلیت رو داره که اگر فرمی درست اطلاعاتش وارد نشده ایمیلی فرستاده بشه حاوی لینکی مختص اون کاربر که ویرایش کنه اطلاعاتش رو ؟
    9 ) میشه مثلا کاربر فرمی پر و ارسال کرد برای هم مدیر هم کاربر ارسال بشه ؟
    با تشکر

    1. سلام
      1- تنظیمات فرم >> تاییدیه … اینجا هر چیزی که قراره بعد از ثبت فرم اتفاق بیفته قابل کنترل هست.
      2- توی همون تاییدیه شورت کد، شماره تراکنش رو وارد کنید تا کد رهگیری به کاربر داده بشه.
      4- بله توی گیت هاب افزونه gravity forms coupon هست میتونید استفاده کنید
      5- بله ، مدیریت وردپرس >> فرم ها >> برون/درون ریزی
      6- فک کنم به قدرت سرور و دیتابیس شما مربوط میشه تا گرویتی فرم
      7- بله ،
      8- تنظیمات فرم >> اعلان ها
      9 – بله
      بقیه سوالاتتون رو اگر یکبار گرویتی فرم رو نصب کنید و نیم ساعت باهاش کار کنید به جواب بله یا خیر خواهید رسید.

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

    1. سلام
      بعد از نصب درگاه و راه اندازی درگاه ، موقع پیکربندی درگاه گزینه هایی که مربوط به “تاییدیه” هست رو فقط گزینه ی “تاییدیه پیشفرض” رو تیک بزنید.
      به تنظیمات فرم >> تاییدیه ها برید و تاییدیه پیشفرض رو ویرایش کنید.
      داخل متن تاییدیه از شورت کد هایی که سمت راست توسط یک ایکون کوچک در اختیارتون میگیره استفاده کنید. مثل شورتکد {payment_pack}
      برای ظاهر و استایل هم باید با css ظاهرش رو عوض کنید.

  8. سلام. فرم ورود رو درست کردم. اما یه مشکل دارم
    با فرم ورود که لاگین میشیم توی بخش ورودی های فرم مشخصات رو میزنه
    یعنی شماره میزنه تعداد لاگین ها رو. میشه کاری کرد که این فرم ورود ورودی نزنه ؟؟
    ینی فقط بشه باش وارد شد یه جای مدیریت سایت توی منوی ورودی ها برای فرم ورود تعداد ورود ایجاد نشه.
    ممنون
    منتظر جوابتون هستم.
    تشکر

  9. سلام و خسته نباشید
    ببخشید میشه توی گراویتی فرم خروجی که برای کاربر هم نمایش هم زمانی که به ایمیلش فرستاده میشه شبیه به یه فرم استخدام باشه منظورم جدول بندی بشه یه گوشه لوگو و در یک جدول شبیه به فرم های استخدام اطلاعات را قرار بده ؟ ممنون اگر نیاز به نوشتن ادان اضافی هست هم بگین صحبت کنیم در مورد هزینه هاش ممنون

      1. سلام ببخشید من این کارو انجام دادم و شد فقط الان یسری ایرادات وجود داره مثلا تگ br رو به مقدار زیاد اضافه میکنه موقع نمایش و برای دیدن فرم باید اسکرول بدم تا ب فرم برسم و این که متنش کلا سبز رنگه میخواستم بهم بگین کجا فایل استایلشه تا هم رنگ متن و هم بردر رو تغییر بدم و یه سوال میشه تو فرم نمایشی عکس های آپلود شده نمایش داده بشن الان که لینکشو فقط نشون میده اینbr های متعدد که میسازه رو هم بگین دلیلش چیه ممنون میشم با تشکر

        1. سلام
          برای فاصله و رنگ تاییدیه که میتونید کد های استایلتون رو به اخر style خود قالب اضافه کنید و بعد از خالی کردن کش مرورگر اعمال میشه ولی برای اعلان ها حتما باید به صورت inline استایل بدید. یعنی توی هر تگ html باید یک اتریبیوت style=”” اضافه کنید و داخل همون استایلدهی کنید.

      2. قالب ایمیل ها رو تغییر دادم ولی جدول در ایمیل ارسال شده نمی افته border نمیگیره و خطوط جدول نیست این رو باید چیکار کرد خواهشا کمک کنین من table > th > td قرار دادم نشد html بالا و پایینش قرار دادم نشد یعنی ظاهر فرم دقیقا همونه که میخوام ولی خط های جدول کشیده نمیشه

        1. سلام
          عرض کردم که باید inline استایل بدید. داخل خود تگ های td و th باید style=”border…..” رو بزارید. ضمنن دستور table > th > td هم غلطه و باید به صورت table > tr > td و table > tr > th باشه.

          1. و این تگ br های معدد که در بخش تاییده ها خودکار وارد میشه دلیلش چی میتونه باشه ببینید فرم ارسال که میشه یه صفحه میاد که جدول رو نشون میده و اطلاعات کاربر این میاد چند سطر پایین من دیباگ زدم دیدم های خودکار اضافه شده این در بخش تاییدیه هاست ممنون میشم این رو هم بگین

  10. با سلام و تشکر فراوان از مطالب ارزشمند سایت که در اختیار دیگران قرار می دین
    یه سوالی برام پیش اومده آیا امکانش هست باکسی که برا پسورد در نظر می گیریم مثل صفحه لاگین ورودپرس پسورد رو هنگام ورود نشون نده یعنی منظورم input type=”password” باشه
    ممنون راهنمایی بفرمایین

  11. سلام
    تمام مراحل رو انجام دادم، اول User Registration رو نصب کردم و بعد کدهای شما رو در functions.php ذخیره کردم.

    الان دو تا فرم داردم:
    فرم اول: یکیش فرم ثبت نام هست که با User Registration درست کردم و ثبت نام انجام میشه و ایمیل تاییدیه هم ارسال میشه.

    فرم دوم : یه فرم لاگین دیگه دارم که طبق توضیحات بالا با دو فیلد متنی و قراردادن عبارت username-login و password-login در کلاس css سفارشی درست شده.

    با انجام مراحل بالا یوزرهایی که از قبل در سایت وردپرس بنده ثبت نام بودن با فرم دوم(لاگین) به راحتی وارد میشن اما مشکل کار اینه که درفرم اول و تنظیمات User Registration فیلد رمز رو میزه رمز خودکار و یوزرهایی که با فرم اول(ثبت نام) ثبت نام میشن و قصد داردن با فرم دوم لاگین بشن به پسوردشون گیر میده.

    ضمن اینکه رمزهای عبور در فرمهای بنده به شکل ستاره نشون داده نمیشه.

    1. سلام
      کلا چه کاربرهایی که قبلا عضو بودن چه الان عضو شدن یک رمز عبور منحصر به فرد دارند. اگر توسط فرم اول رمز خودکار ساخته میشه این رمز خودکار به ایمیلشون ارسال میشه و اگر با اون رمز نتونن از طریق فرم دوم لاگین بشن پس از طریق صفحه پیشفرض خود وردپرس یعنی wp-login.php هم نمیتونن وارد سایت بشن. چون این فرم دوم هم از همون توابع مربوط به ورود خود وردپرس استفاده میکنه. ضمنن قرار نیست رمز های عبور توی همه فرم های شما ستاره دار باشن. این کد برای فرمی که به عنوان فرم لاگین استفاده میشه رمز رو ستاره دار میکنه.

      1. ممنونم از پاسختون.

        User Registration برای فرمی که ما به عنوان فرم “ثبت نام” طراحی میکنیم یک سری خوراک آماده میکنه که متاسفانه خوراک فیلد رمز عبور رو به صورت خودکار خودش تعیین میکنه این معنیش اینه که هیچ فردی در زمان ثبت نام با فرم ما نمیتونه خودش رمزشو تعیین کنه.
        برای اینکه این اتفاق نیافته پیشنهادی دارین یا افزونه خاصی؟

        1. سلام
          شما فیلد پسورد رو به فرم اضافه کنی همچین مشکلی نخواهی داشت.
          خود گرویتی فرم توی قسمت فیلدها فیلد پسورد هم داره. که اونو اضافه کنید و توی خوراک افزودنی ثبت نام همون فیلد رو بعنوان پسورد انتخاب کنید.

  12. سلام
    دو سوال :
    1- در صفحه لاگین که با روش بالا درست کردم، زمانی که هم “یوزر” و هم “پسورد” اشتباه باشد، برای هردو این پیغام را میدهد:
    “نام کاربری وارد شده اشتباه است.”
    و گزینه رمز عبورتان را فراموش کرده اید را نمیدهد.

    تصویر مربوط به سوال اول http://uupload.ir/files/qidr_capture.png

    2- اگر یوزر درست باشد ولی پسور اشتباه درست عمل میکند و بازدن لینک “رمزتان را گم کرده‌اید؟” به صفحه ریست پسورد میرود.

    3- چگونه میتوان خود صفحه لاگین سایت را در فرم وارد کرد؟ یعنی در ابتدا افراد فقط صفحه لاگین سایت وردپرس را ببیند و بعد از لاگین شدن فرم را مشاهده کند؟

    1. سلام
      توی تنظیمات فرم >> محدودیت ها >> نیاز به وارد شدن کاربر میتونید یک پیغام بزارید و لینک ورودی رو وردپرس رو بزارید. نوع بهتری اگر بخواهید باید با توابع وردپرس خودتون یک پلاگین برای اینکار بنویسید.

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

  14. با عرض سلام و تجدید احترامات
    برای فراموشی رمز عبور چطور باید عمل کرد ؟!
    ممنون میشم راهنمایی بفرمایید
    سپاس

  15. با درود
    جناب، یک سوال داشتم که بفرمایید امکان پذیر هست یا خیر؟
    مثلا در فرم ثبت نام ما یک سری اطلاعات اضافه همانند نام و نام خانوادگی و کد ملی و آدرس هم از کاربر میگیریم.
    راهی وجود دارد در صورتی که کاربر لاگین بود و همین فیلدهای نام و کد ملی و … در فرم دیگر وجود داشت، این فیلد خودکار فراخوانی شوند؟
    با سپاس

جدیدترین مقالات