=== EZ Login | ورود پیامکی، گوگل، ووکامرس، LearnDash و OTP ===
Contributors: drowranger
Tags: login, otp, sms, google, woocommerce
Requires at least: 5.8
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.7.59
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

ورود و ثبت‌نام با OTP و گوگل، اعلان سفارش، اطلاع تخفیف و موجودی، خبرنامه پیامکی، سبد خرید رهاشده، LearnDash و ویجت‌های Elementor.

== Description ==

EZ Login یک افزونه ورود و ثبت نام OTP برای وردپرس است. این افزونه امکان ورود کاربران با شماره موبایل و کد یکبار مصرف، ورود با Google، فرم قابل استفاده در شورت کد و Elementor، کپچای ورود و ثبت نام، محدودسازی تلاش های ورود، اعلان سفارشات ووکامرس، ارسال کد پیگیری، بازیابی سبد خرید رهاشده و جایگزینی فرم ورود LearnDash را فراهم می کند.

تمرکز افزونه روی مسیرهای ورود قابل اعتماد است: پیامک و گوگل. ربات بله علاوه بر اعلان سفارشات مدیر، می‌تواند یادآوری‌های شخصی کاربران را نیز ارسال کند. کاربر شماره خودش را داخل ربات به Chat ID متصل می‌کند؛ ورود کاربران با بله یا تلگرام همچنان در افزونه فعال نیست.

تمام قابلیت‌های اختیاری از منوی مرکزی «قابلیت‌ها» مدیریت می‌شوند. مدیر می‌تواند وضعیت هر ماژول را در یک صفحه ببیند، آن را فعال یا غیرفعال کند و با لینک مستقیم وارد تنظیمات همان قابلیت شود. در حالت غیرفعال، Hook، Cron، Query، Class و Widget اختصاصی آن قابلیت تا جای ممکن در فرانت سایت بارگذاری نمی‌شود و تنظیمات قبلی نیز حذف نمی‌شوند.

= امکانات اصلی =

* ورود و ثبت نام با شماره موبایل و OTP
* نمایش هر رقم OTP در یک باکس مستقل و زیبا، همراه با Paste، حرکت خودکار، Backspace و تکمیل خودکار مرورگر
* امکان انتخاب طول کد یک‌بارمصرف بین ۴ تا ۸ رقم
* Trusted Device با هشدار امنیتی، تاریخچه ورود، نمایش IP و مدیریت/لغو دستگاه‌های قابل اعتماد
* داشبورد آمار ورود، ثبت‌نام، خطاهای OTP و تبدیل‌های WooCommerce
* اتوماسیون WooCommerce برای تولد، بازگشت مشتری و یادآوری خرید مجدد
* مرکز اعلان‌های My Account برای مدیریت تخفیف، موجود شدن، خبرنامه، نظرسنجی، اتوماسیون و لغو عضویت
* Import / Export کامل تنظیمات EZ-Login با فایل JSON برای انتقال بین سایت تست و سایت اصلی
* نام پیش‌فرض قابل تنظیم برای کاربران جدید و ابزار Ajax اصلاح کاربران قدیمی در دسته‌های ۵۰تایی
* منوی «چنج‌لاگ» برای مشاهده امکانات و بهبودهای هر نسخه به زبان ساده
* ارسال پیامک با ملی پیامک، حالت پترن به صورت پیش فرض
* پشتیبانی هم‌زمان از نام کاربری/رمز قدیمی و API Key جدید ملی پیامک
* تست کامل ملی پیامک در همان صفحه تنظیمات پیامک
* ورود با Google OAuth
* نمایش فقط ویجت «EZ-Login پیشرفته» برای طراحی‌های جدید و حفظ داخلی ویجت قدیمی برای صفحات ساخته‌شده قبلی
* شورت کد `[ez-login]`
* شورت کد خام `[ez-login]` به‌صورت پیش‌فرض ورود/ثبت‌نام یکپارچه؛ امکان انتخاب حالت تب‌بندی، فقط ورود یا فقط ثبت‌نام
* تنظیم آدرس پیش فرض بعد از ورود برای همه فرم ها
* امکان تعیین ریدایرکت در خود شورت کد
* کپچای یکپارچه برای ورود و ثبت نام
* Rate Limit پیشرفته برای شماره موبایل، IP، User Agent و تلاش اشتباه کد تایید
* سفارشی سازی صفحه wp-login.php
* اعلان سفارشات ووکامرس از طریق پیامک
* پشتیبانی از پترن مستقل ملی پیامک برای OTP، مشتری سفارش، مدیر سفارش، کد پیگیری و سبد خرید رهاشده
* ارسال کد پیگیری سفارش ووکامرس از صفحه سفارش و نمایش آن در حساب کاربر
* یادآور نظرسنجی محصول پس از X روز از تکمیل سفارش با متن عادی یا پترن مستقل ملی‌پیامک
* بازیابی سبد خرید رهاشده با پیامک زمان‌بندی‌شده بعد از X ساعت
* ساخت کوپن اختصاصی درصدی یا مبلغ ثابت، محدود به همان کاربر و معتبر به مدت Y روز
* پنل مدیریت جدید و یکپارچه با دسترسی سریع به همه بخش‌ها
* راهنمای قدم‌به‌قدم و توضیح کامل متغیرهای پترن و قالب در هر بخش
* کنترل‌های کامل و دسته‌بندی‌شده استایل ویجت Elementor
* اعلان سفارشات ووکامرس به مدیران در بله
* المان Elementor «اطلاع‌رسانی شگفت‌انگیز» برای عضویت در اعلان تخفیف هر محصول
* المان Elementor «اطلاع از موجود شدن» برای محصولات ناموجود
* المان Elementor «خبرنامه پیامکی» برای عضویت شماره‌ها در خبرنامه تخفیف‌ها
* تشخیص تخفیف تازه و ثبت تاریخچه قیمت قبلی/جدید برای خبرنامه
* خبرنامه تخفیف‌های امروز، این هفته یا این ماه تا سقف ۱۰ محصول قابل تنظیم
* پشتیبانی متن عادی و پترن مستقل ملی‌پیامک برای تخفیف، موجودی و خبرنامه
* بخش یکپارچه «محصولات منتظر و شماره‌ها» با جدول‌های AJAX جدا، حذف شماره‌های تکراری، فیلتر نوع عضویت و خروجی Excel
* نمایش محصولات منتظر تخفیف/موجودی و تعداد و جزئیات مشترکان هر محصول با صفحه‌بندی AJAX
* سازگاری با LearnDash و جایگزینی لاگین LearnDash با EZ-Login
* ثبت چند مدیر بله با Chat ID یا از طریق دستور ثبت داخل ربات
* امکان ارسال اعلان بله به کانال یا گروه خصوصی

= راهنمای شورت کد =

شورت کد اصلی افزونه به‌صورت پیش‌فرض یک فرم یکپارچه نمایش می‌دهد؛ شماره موجود وارد حساب می‌شود و شماره جدید با همان مسیر ثبت‌نام می‌شود:

`[ez-login]`

برای جدا کردن حالت ها می توانید از mode استفاده کنید:

* فقط ورود: `[ez-login mode="login"]`
* فقط ثبت نام: `[ez-login mode="register"]`
* ورود و ثبت نام تب بندی شده: `[ez-login mode="tabs"]`

برای تعیین آدرس بعد از ورود در همان شورت کد:

`[ez-login redirect_url="/my-account/"]`

فرم قدیمی `link` هم همچنان پشتیبانی می شود:

`[ez-login link="/my-account/"]`

اگر در تنظیمات عمومی افزونه «آدرس پیش فرض بعد از ورود» را وارد کنید، روی شورت کد، المنتور، ورود پیامکی و ورود با گوگل اعمال می شود؛ مقدار داخل شورت کد نسبت به تنظیم عمومی اولویت دارد.

= سازگاری با LearnDash =

در تنظیمات عمومی افزونه گزینه سازگاری با LearnDash به صورت پیش فرض فعال است. با فعال بودن این گزینه، خروجی شورت کد/فرم لاگین LearnDash با فرم ورود و ثبت نام EZ-Login جایگزین می شود. اگر خواستید لاگین پیش فرض LearnDash نمایش داده شود، این گزینه را غیرفعال کنید.

= کد پیگیری سفارش ووکامرس =

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

= سبد خرید رهاشده ووکامرس =

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

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

این قابلیت در نبود ووکامرس منو، پردازش زمان‌بندی‌شده یا هوک فروشگاهی فعال نمی‌کند.

= اعلان سفارشات در بله =

بخش اعلان سفارشات دو تب جدا دارد:

* پیامک ها: تنظیمات ارسال پیامک به مشتری و مدیر
* بله و اعلان مدیر: تنظیمات ربات بله، ثبت مدیرها، کانال یا گروه خصوصی و قالب پیام بله

برای بله می توانید چند Chat ID عددی مدیر وارد کنید، یا یک کانال/گروه خصوصی به ربات بدهید و مدیران را داخل آن عضو کنید. برای مدیرها نباید username مثل @username وارد شود؛ مقدار درست باید Chat ID عددی دریافت شده از وبهوک، دستور ثبت یا دستور /id باشد. همچنین مدیر می تواند از طریق دستور ثبت داخل ربات، Chat ID خودش را به افزونه اضافه کند. ربات فقط به دستورهای /start، /help، /id و دستور ثبت مدیر پاسخ می دهد و به پیام های عادی جواب خودکار نمی فرستد.

= اطلاع‌رسانی محصولات ووکامرس =

EZ Login سه المان Elementor برای اطلاع‌رسانی محصولات WooCommerce دارد:

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

برای کاربران واردشده، افزونه ابتدا شماره حساب کاربری را استفاده می‌کند. اگر شماره‌ای در حساب موجود نباشد یا کاربر مهمان باشد، شماره از خود المان دریافت می‌شود.
برای جلوگیری از عضویت یا لغو شماره دیگران، شماره واردشده توسط مهمان با کد یک‌بارمصرف تأیید می‌شود؛ کاربر واردشده نیز فقط می‌تواند شماره متصل به حساب خودش را مستقیماً مدیریت کند.

پترن هر قابلیت مستقل است و از `{0}` شروع می‌شود. راهنمای دقیق پارامترها در همان تب «اطلاع‌رسانی محصولات» نمایش داده می‌شود.

در همان تب «اطلاع‌رسانی محصولات»، بخش «محصولات منتظر و شماره‌ها» قرار دارد. محصولات منتظر تخفیف و محصولات منتظر موجود شدن در دو جدول AJAX جدا و صفحه‌بندی‌شده نمایش داده می‌شوند. فهرست شماره‌ها تکراری نیست و از منوی کشویی می‌توان همه شماره‌ها، اعضای خبرنامه، منتظران تخفیف یا منتظران موجودی را دید و خروجی Excel گرفت. ستون‌های خروجی شامل شماره تلفن، نوع خبرنامه/عضویت و محصول مربوطه است.

== External Services ==

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

* ملی پیامک: برای ارسال کد یکبار مصرف، پیامک های سفارش و یادآوری سبد خرید رهاشده. اطلاعات ارسالی شامل شماره موبایل گیرنده، متن پیام یا کد پترن و متغیر پترن است. اتصال می‌تواند با نام کاربری/رمز قدیمی یا API Key انجام شود. سرویس: https://melipayamak.com/
* Google OAuth: برای ورود با گوگل. کاربر برای احراز هویت به Google هدایت می شود و پس از تایید، اطلاعات پایه حساب مثل ایمیل و نام برای ساخت یا ورود کاربر استفاده می شود. سرویس: https://accounts.google.com/
* Bale Bot API: برای اعلان سفارشات مدیر و یادآوری‌های شخصی کاربران در بله. در حالت یادآوری شخصی، کاربر شماره موبایل خودش را با دکمه اشتراک مخاطب ربات ارسال می‌کند؛ افزونه شماره نرمال‌شده را به Chat ID عددی همان کاربر متصل می‌کند و هنگام یادآوری، Chat ID مقصد و متن اعلان را به Bale Bot API می‌فرستد. سرویس: https://tapi.bale.ai/
* Cloudflare Turnstile، Google reCAPTCHA یا hCaptcha: در صورت فعال کردن کپچا، پاسخ کپچا برای اعتبارسنجی به سرویس انتخاب شده ارسال می شود. سرویس ها: https://challenges.cloudflare.com/ ، https://www.google.com/recaptcha/ ، https://www.hcaptcha.com/

== Installation ==

1. پوشه افزونه را در مسیر `/wp-content/plugins/ez-login` آپلود کنید یا از بخش افزونه های وردپرس نصب کنید.
2. افزونه را فعال کنید.
3. از منوی EZ-Login، تنظیمات پیامک و گوگل را انجام دهید.
4. برای نمایش فرم از شورت کد `[ez-login]` یا ویجت Elementor افزونه استفاده کنید.
5. برای اعلان سفارشات و بازیابی سبد رهاشده، از منوی «اعلان‌ها و سبد رهاشده» تنظیمات موردنظر را فعال کنید.

== Frequently Asked Questions ==

= آیا ورود با بله یا تلگرام وجود دارد؟ =

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

= آیا ملی پیامک با پترن کار می کند؟ =

بله. حالت پترن به صورت پیش فرض فعال است. پترن OTP باید یک متغیر `{0}` داشته باشد. در صفحه تنظیمات پیامک، تست کامل ملی پیامک وجود دارد که روش اتصال، API Key یا نام کاربری/رمز، Body ID، متغیر پترن، شماره ارسال، کد HTTP و پاسخ سرویس را بررسی می‌کند؛ آدرس‌های داخلی سرویس و اطلاعات محرمانه نمایش داده نمی‌شوند.

= آیا اتصال API Key ملی پیامک پشتیبانی می شود؟ =

بله. در تنظیمات ورود با پیامک، روش احراز هویت را روی «API Key / Console API» قرار دهید، کلید API را وارد کنید و تست کامل را اجرا کنید. روش قدیمی نام کاربری و رمز حذف نشده است. آدرس‌های داخلی سرویس به‌صورت خودکار مدیریت می‌شوند و در رابط کاربری نمایش داده نمی‌شوند.

= آیا می توان چند مدیر را برای اعلان بله ثبت کرد؟ =

بله. می توانید Chat ID عددی مدیرها را در تنظیمات وارد کنید یا با فعال کردن وبهوک، مدیرها از داخل ربات و با دستور ثبت، خودشان Chat ID را ثبت کنند. username مثل @username برای ارسال مستقیم معتبر نیست و ممکن است خطای no such group or user بدهد. اگر مدیر از ربات خارج شود یا چت را پاک کند، دوباره دستور /id یا دستور ثبت را داخل ربات ارسال کند.

= آیا می توان اعلان بله را به کانال یا گروه خصوصی فرستاد؟ =

بله. ربات را به کانال یا گروه خصوصی اضافه کنید، Chat ID مقصد را در تنظیمات وارد کنید و گزینه ارسال به کانال/گروه خصوصی را فعال کنید.

= سبد خرید رهاشده چگونه تشخیص داده می‌شود؟ =

بعد از اضافه شدن یا تغییر محصول، آخرین وضعیت سبد ثبت می‌شود. برای مهمان، ارسال پیامک زمانی ممکن است که شماره موبایل در تسویه‌حساب وارد شده باشد. اگر تا زمان تعیین‌شده سفارش ساخته نشود، یادآوری ارسال می‌شود؛ ساخت سفارش، همان سبد را به وضعیت تبدیل‌شده تغییر می‌دهد.

= آیا افزونه با Elementor سازگار است؟ =

بله. ویجت قدیمی EZ-Login برای حفظ صفحات قبلی بدون تغییر باقی مانده و ویجت جدید «EZ-Login پیشرفته» با تنظیمات بخش‌بندی‌شده، حالت ورود/ثبت‌نام یکپارچه، ریدایرکت صفحه فعلی، مای‌اکانت ووکامرس یا لینک دلخواه، جایگاه لوگو و چند استایل آماده دارک و لایت اضافه شده است. شورت کد `[ez-login]` نیز همچنان قابل استفاده است.

= طول کد OTP چگونه تغییر می‌کند؟ =

از منوی «ورود با پیامک» تعداد ارقام کد را بین ۴ تا ۸ تعیین کنید. فرم ورود به همان تعداد باکس جداگانه می‌سازد و همان طول در تولید، ارسال، اعتبارسنجی و تست پیامک استفاده می‌شود. پترن ملی‌پیامک همچنان تنها یک متغیر `{0}` دارد و کل کد را در همان متغیر دریافت می‌کند.

= نام پیش‌فرض کاربران جدید و ابزار کاربران قدیمی چگونه کار می‌کند؟ =

در بخش «ثبت‌نام و فیلدها» نام پیش‌فرض را مشخص کنید. اگر کاربر نامی وارد نکند، first name، nickname و display name با همان مقدار ساخته می‌شوند. در منوی «ابزارها» می‌توانید کاربران قدیمی شناسایی‌شده توسط EZ-Login را در دسته‌های ۵۰تایی و بدون تغییر نام کاربری، رمز، ایمیل یا شماره موبایل اصلاح کنید؛ حساب‌های مدیر نادیده گرفته می‌شوند.

= چنج‌لاگ افزونه را از کجا ببینم؟ =

از منوی داخلی «تغییرات نسخه‌ها» می‌توانید امکانات و بهبودهای مهم هر نسخه را بدون توضیحات فنی مربوط به فایل‌ها مشاهده کنید.

= آیا افزونه با Perfmatters و Remove Unused CSS سازگار است؟ =

بله. از نسخه 1.7.2 نمایش مرحله دریافت کد و مرحله تایید OTP به CSS پویا وابسته نیست و با Remove Unused CSS سازگار شده است. بعد از بروزرسانی، کش Perfmatters و فایل‌های CSS استفاده‌شده را یک بار پاک و دوباره تولید کنید.

== Screenshots ==

1. تنظیمات عمومی افزونه
2. تنظیمات ورود با پیامک و تست کامل ملی پیامک
3. فرم ورود با شماره موبایل و گوگل
4. تنظیمات اعلان سفارشات پیامکی
5. تنظیمات اعلان سفارشات در بله
6. ویجت Elementor و دسته‌بندی کنترل‌های استایل
7. تنظیمات سبد خرید رهاشده و کوپن اختصاصی

== Changelog ==

<!-- فقط ۱۵ چنج‌لاگ آخر نمایش داده شود. تا زمانی که نسخه اصلی از 1.7 به 1.8 تغییر نکرده، همه تغییرات شاخه 1.7 در یک چنج‌لاگ تجمیعی نوشته شوند. -->

= 1.7.1 تا 1.7.59 =

* سازگاری ملی‌پیامک با Console API سخت‌گیرانه شد: موفقیت فقط با HTTP 2xx، پاسخ JSON معتبر، شناسه ارسال مثبت (`recId`) و نبود خطای `status` پذیرفته می‌شود؛ پاسخ 2xx مبهم دیگر موفق تلقی نمی‌شود.
* ارسال Simple با JSON `from/to/text` و ارسال Shared با JSON `bodyId/to/args` انجام می‌شود؛ fallback فرم برای دامنه رسمی Console غیرفعال شد تا درخواست تکراری یا رفتار خارج از مستندات رخ ندهد.
* در نصب تازه، API Key / Console API روش پیشنهادی و پیش‌فرض است؛ سایت‌های ارتقایافته‌ای که قبلاً نام کاربری/رمز داشته‌اند روی Legacy باقی می‌مانند تا سازگاری عقب‌رو حفظ شود.
* گزارش تست کامل ملی‌پیامک اکنون `recId` و دلیل دقیق شکست پاسخ را نشان می‌دهد و پاسخ خالی، JSON خراب، خطای `status` و HTTP غیر 2xx را جداگانه تشخیص می‌دهد.
* رابط مدیریت مرتب‌تر شد: باکس‌های وضعیت/برندینگ فقط در داشبورد آمار نمایش داده می‌شوند، منوی سایدبار گروه‌بندی شده و زیرمنوی مستقل ووکامرس جای نوار تب شلوغ داخل محتوا را گرفته است؛ چهار گروه «لینک‌های مفید و پشتیبانی» در تمام صفحات روی دسکتاپ کنار هم نمایش داده می‌شوند.
* المان «اطلاع‌رسان EZ-Login» به یک فرم واحد تبدیل شد؛ شگفت‌انگیز، کاهش قیمت و موجودشدن به صورت گزینه‌های تیکی داخل همان فرم هستند و یک OTP می‌تواند چند عضویت انتخاب‌شده را یکجا ثبت یا لغو کند.
* مسیر AJAX عضویت «تخفیف خورد خبرم کن» اصلاح شد و price_drop در فهرست قابلیت‌های مجاز ثبت عضویت قرار گرفت.
* منوی سایدبار داخلی EZ-Login قبل از محتوای هر تب رندر می‌شود تا در تمام صفحات و جابه‌جایی‌های Ajax همیشه حاضر بماند؛ سایدبار همچنان Sticky نیست و ارتفاع طبیعی دارد.
* سایدبار مدیریت از حالت Sticky خارج شد؛ قابلیت مستقل «تخفیف خورد خبرم کن» با تشخیص کاهش واقعی قیمت نهایی اضافه شد و «موجود شد خبرم کن»، «تخفیف خورد خبرم کن» و شگفت‌انگیز در المان واحد «اطلاع‌رسان EZ-Login» تجمیع شدند؛ ویجت‌های قدیمی فقط برای سازگاری صفحات قبلی مخفی نگه داشته می‌شوند.
* یادآوری کاربر در بله برای شگفت‌انگیز، موجود شدن، خبرنامه و نظرسنجی اضافه شد؛ اتصال با اشتراک امن شماره خود کاربر در ربات انجام می‌شود و هر کانال فقط در صورت فعال بودن قابلیت مبدأ ارسال می‌شود.
* ویجت «اطلاع از موجود شدن» در قالب‌های Elementor با چند مسیر تشخیص Product ID پایدارتر شد و قابلیت خاموش دیگر حتی در Editor رندر نمی‌شود.
* کلید فعال/غیرفعال‌سازی هر قابلیت فقط در مرکز «قابلیت‌ها» باقی ماند و دکمه‌های تکراری «مدیریت قابلیت» از صفحات جزئی حذف شدند.
* علامت‌های راهنمای `?` به دکمه‌های گرد ۲۶ پیکسلی با Hover آبی تبدیل شدند و Footer پیش‌فرض WordPress در صفحه یکپارچه EZ-Login مخفی شد.
* مسیر Ajax ذخیره پنل تقویت شد تا تنظیمات ماژول‌های خاموش نیز هنگام ذخیره همان بخش به‌درستی Register و ذخیره شوند.
* رنگ Hover آیکن بازکننده پاپ‌آپ در هر سه المان اعلان WooCommerce روی `#257AFF` تنظیم شد.
* در حالت «آیکن + پاپ‌آپ»، تریگر بدون دایره، پس‌زمینه، Border یا Shadow است و برای محدوده کلیک بهتر، از هر چهار طرف ۵ پیکسل Padding دارد؛ اندازه/رنگ خود آیکن همچنان قابل تنظیم است.
* سه المان Elementor «اطلاع‌رسانی شگفت‌انگیز»، «اطلاع از موجود شدن» و «خبرنامه پیامکی» بازطراحی شدند؛ حالت نمایش مستقیم یا آیکن قابل‌تغییر + پاپ‌آپ، چیدمان یک‌خطی فیلد شماره و ردیف مستقل دکمه‌ها اضافه شد.
* خطای نحوی Lazy Loader در بررسی وجود API کپچا رفع شد؛ بارگذاری Popup اکنون در PHP 7.4 تا 8.x بدون Parse Error انجام می‌شود.
* امنیت Google OAuth تقویت شد: state یک‌بارمصرف به کوکی HttpOnly همان مرورگر متصل است و callback فاقد state معتبر یا transient منقضی صریحاً رد می‌شود.
* عضویت و لغو اعلان‌های ووکامرس برای مهمان با OTP مالکیت شماره تأیید می‌شود؛ کاربران واردشده نیز فقط روی شماره حساب خود عملیات مستقیم دارند و Rate Limit مستقل اعمال می‌شود.
* Live Preview ویجت پیشرفته Elementor کامل شد و تغییر Preset، لوگو، تب‌ها و مرحله پیش‌نمایش در iframe بدون خروجی خالی یا قدیمی نمایش داده می‌شود.
* Turnstile داخلی مانند hCaptcha و reCAPTCHA به‌صورت explicit و با Widget ID مستقل برای چند فرم، Popup و ارسال مجدد OTP مدیریت می‌شود.
* شورت‌کد EZ-Login داخل ویجت عمومی Shortcode/Text/HTML و Popupهای Elementor شناسایی می‌شود و Cache تشخیص Popup بدون Query تکراری روی بازدیدهای عادی نگهداری می‌شود.
* سازگاری WordPress 7.1 تکمیل شد: Shortcodeها در REST، Block Editor iframe و WP-CLI ثبت می‌شوند و Asset فرم برای محتوای ذخیره‌شده یا تازه درج‌شده داخل ویرایشگر بلوکی بارگذاری می‌شود.
* Live Preview ویجت قدیمی Elementor بازگردانده شد، Assetهای ویجت برای کاربران واردشده در فرانت حذف شدند و Editor/Preview همچنان CSS و JavaScript کامل دریافت می‌کند.
* ساخت state و transient ورود گوگل از زمان رندر فرم به لحظه کلیک کاربر منتقل شد و هشدار عدم کارکرد روی سایت‌های دارای IP ایران کنار کلید فعال‌سازی افزوده شد.
* hCaptcha و reCAPTCHA در صفحات دارای چند فرم با Widget ID مستقل رندر و Reset می‌شوند تا Popupها و ارسال مجدد OTP توکن فرم دیگری را تغییر ندهند.
* پیش‌نمایش همه حالت‌های فرم در ویجت‌های قدیمی و پیشرفته Elementor به Core Renderer یکسان متصل شد؛ مرحله OTP دیگر توسط JavaScript ریست نمی‌شود و تغییرات Style در لحظه اعمال می‌شوند.
* استایل پایه باکس‌های OTP اصلاح شد تا Typography، Border، Radius، Padding، رنگ، پس‌زمینه و Shadow تنظیم‌شده در Elementor بدون تداخل `!important` نمایش داده شوند.
* تشخیص Popup فقط Templateهای واقعی نوع Popup را بررسی می‌کند، Query Parameterهای Elementor فقط برای ویرایشگر مجاز پذیرفته می‌شوند و کاربر واردشده Asset بلااستفاده دریافت نمی‌کند.
* لوگوی سایت به Core منتقل شد، Renderer به‌صورت Lazy فقط هنگام Render فرم لود می‌شود، Captcha خاموش خودکار فعال نمی‌شود و توکن Captcha در ارسال مجدد دوباره استفاده نمی‌شود.
* Renderer مشترک فرم از ثبت شورت‌کد جدا شد؛ ویجت‌های قدیمی و پیشرفته Elementor دیگر به فایل Shortcode وابسته نیستند و خطای `ez_login_render_form_html()` در Lazy Load رفع شد.
* CSS و JavaScript فرم در Editor و Preview المنتور همیشه ثبت و بارگذاری می‌شوند تا تغییرات Typography، رنگ، Border، Padding و Background بدون تأخیر نمایش داده شوند.
* تشخیص ویجت EZ-Login اکنون داده واقعی `_elementor_data` را نیز بررسی می‌کند و Lazy Loader پاپ‌آپ پس از ذخیره Template به‌روز می‌شود.
* خاموش‌کردن «ورود مدیریت با EZ-Login» اکنون واقعاً تمام Override، استایل، کپچا، مسیر اختصاصی و رفتار سفارشی wp-login.php را متوقف می‌کند؛ Force Login دیگر این سوییچ را دور نمی‌زند.
* Bootstrap افزونه بازطراحی شد تا فایل سنگین تنظیمات و ماژول‌های اختیاری روی تمام صفحات wp-admin لود نشوند؛ کدهای فرانت، مدیریت، Ajax و Cron بر اساس Context جدا شده‌اند.
* حالت Smart بارگذاری Asset بهینه شد؛ صفحات بدون فرم EZ-Login دیگر CSS/JS ورود یا Lazy Loader عمومی را بی‌دلیل دریافت نمی‌کنند و Popup Elementor فقط در صورت وجود Popup مرتبط بررسی می‌شود.
* ماژول‌های Cron-only مثل یادآور نظرسنجی و اتوماسیون WooCommerce دیگر روی بازدید عادی کاربران اجرا/Require نمی‌شوند و فقط در Cron یا پنل تنظیمات فعال هستند.
* بررسی جدول لاگ از تمام درخواست‌ها حذف شد و ساخت/Repair جدول فقط هنگام فعال‌سازی یا اولین استفاده واقعی انجام می‌شود؛ بررسی Migration نسخه نیز در نسخه جاری با یک مقایسه سریع متوقف می‌شود.
* پنل کاربری مستقل EZ-Login برای سایت‌های بدون WooCommerce اضافه شد؛ مدیر می‌تواند آن را با شورت‌کد یا المان Elementor نمایش دهد تا کاربر دستگاه‌های قابل اعتماد، تاریخچه ورود و تنظیمات اعلان‌های خود را مدیریت کند.
* برای سایت‌های بدون WooCommerce، هنگام فعال‌سازی قابلیت‌های نیازمند پنل کاربر هشدار مدیریتی و راهنمای ساخت برگه با `[ez-login-user-panel]` اضافه شد.
* شورت‌کدهای مستقل `[ez-login-trusted-devices]` و `[ez-login-notifications]` و المان Elementor «پنل کاربری EZ-Login» اضافه شدند.
* تاریخچه ورود و دستگاه‌های قابل اعتماد با نمایش IP، مرورگر، آخرین استفاده، انقضا و امکان لغو اعتماد تک‌تک یا همه دستگاه‌ها اضافه شد.
* هشدار امنیتی واضح Trusted Device برای کاربر و مدیر اضافه شد تا استفاده از دستگاه عمومی یا مشترک بدون توجه انجام نشود.
* مرکز اعلان‌های My Account برای مدیریت یکپارچه تخفیف، موجود شدن، خبرنامه، نظرسنجی و پیام‌های خودکار فروشگاه توسعه یافت.
* Import / Export کامل تنظیمات EZ-Login با فایل JSON برای انتقال بین سایت تست و اصلی اضافه شد.
* قابلیت «یادآور نظرسنجی محصول» به WooCommerce اضافه شد؛ پس از X روز از تکمیل سفارش، متن عادی یا پترن مستقل ملی‌پیامک با متغیرهای شروع‌شونده از {0} و لینک همان محصول ارسال می‌شود.
* منوی «المنتور» با مرکز یکپارچه «قابلیت‌ها» جایگزین شد؛ تمام سوییچ‌های اصلی فعال/غیرفعال‌سازی در یک صفحه قرار گرفتند و کنار هر قابلیت لینک مستقیم تنظیمات و توضیح کوتاه نمایش داده می‌شود.
* امکانات جدید WooCommerce، Trusted Device، داشبورد آمار، اتوماسیون و مدیریت رضایت به‌صورت پیش‌فرض خاموش هستند و فقط از صفحه «قابلیت‌ها» فعال می‌شوند.
