ثبت نام در وردپرس فقط با ایمیل‌های خاص (مثلاً Gmail و Yahoo) بدون افزونه

آخرین بروزرسانی در تاریخ فوریه 25, 2026 توسط PersiaWebAdmin

آیا تا به حال برایتان پیش آمده که فرم ثبت‌نام سایت وردپرسی خود را فعال کنید، اما کاربران با ایمیل‌های یکبارمصرف و فیک در سایت عضو شوند؟ این ایمیل‌ها نه تنها ارزش بازاریابی ندارند، بلکه ممکن است امنیت سایت شما را نیز به خطر بیندازند. خوشبختانه نیازی به نصب افزونه‌های سنگین نیست؛ با اضافه کردن یک تکه کد ساده به فایل functions.php قالب فرزند (child theme) خود می‌توانید دامنه‌های ایمیل مجاز را تعریف کرده و ثبت‌نام با سایر دامنه‌ها را مسدود کنید. در این مقاله قدم به قدم این روش را به شما آموزش می‌دهیم.

چرا باید دامنه ایمیل کاربران را محدود کنیم؟

  • جلوگیری از اسپم و کاربران جعلی: ایمیل‌های موقت (مانند 10minutemail) اغلب برای ارسال هرزنامه یا سوءاستفاده از امکانات سایت استفاده می‌شوند.
  • افزایش کیفیت پایگاه کاربری: اگر سایت شما مخاطبان خاصی دارد (مثلاً دانشجویان یک دانشگاه یا کاربران حرفه‌ای)، می‌توانید فقط ایمیل‌های سازمانی یا دامنه‌های معتبر را مجاز کنید.
  • بهبود نرخ تحویل‌پذیری خبرنامه: خبرنامه‌هایی که به ایمیل‌های معتبر ارسال می‌شوند، نرخ بازشدگی بالاتری دارند و کمتر به عنوان اسپم علامت‌گذاری می‌شوند.

راه‌حل بدون افزونه: استفاده از هوک register_post

وردپرس یک هوک (hook) به نام register_post دارد که درست قبل از ثبت‌نام کاربر اجرا می‌شود و به شما اجازه می‌دهد داده‌های ورودی را اعتبارسنجی کنید. ما از همین هوک برای بررسی دامنه ایمیل استفاده می‌کنیم.

مرحله ۱: ایجاد قالب فرزند (Child Theme) – ضروری!

قبل از هر چیز، اگر از قالب آماده استفاده می‌کنید، حتماً یک قالب فرزند بسازید. در غیر این صورت، با بروزرسانی قالب اصلی، کدهای شما پاک خواهند شد. اگر قالب فرزند ندارید، می‌توانید به سادگی با ایجاد یک پوشه و دو فایل (style.css و functions.php) آن را بسازید.

مرحله ۲: افزودن کد به فایل functions.php قالب فرزند

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

/**
 * محدود کردن دامنه ایمیل در فرم ثبت نام وردپرس
 *
 * @param string $login نام کاربری
 * @param string $email ایمیل کاربر
 * @param WP_Error $errors شیء خطاهای وردپرس
 */
function wp24_limit_email_domains( $login, $email, $errors ) {

    // آرایه دامنه‌های مجاز - می‌توانید آنها را تغییر دهید یا گسترش دهید
    $allowed_domains = array(
        'gmail.com',
        'yahoo.com',
        'outlook.com',
        'protonmail.com',
        'aol.com',
        'mail.com',
        'icloud.com'  // مثال اضافه شده
    );

    $is_allowed = false;
    $email_domain = strtolower( substr( strrchr( $email, '@' ), 1 ) );

    // بررسی می‌کنیم که آیا دامنه ایمیل در لیست مجاز وجود دارد؟
    if ( in_array( $email_domain, $allowed_domains ) ) {
        $is_allowed = true;
    }

    // اگر دامنه مجاز نبود، یک خطا ثبت می‌کنیم
    if ( ! $is_allowed ) {
        $errors->add( 'invalid_email_domain', sprintf(
            __( 'خطا: ثبت‌نام فقط با ایمیل‌های معتبر امکان‌پذیر است. لطفاً از یکی از دامنه‌های زیر استفاده کنید: %s', 'wp24-text-domain' ),
            implode( '، ', $allowed_domains )
        ) );
    }
}
add_action( 'register_post', 'wp24_limit_email_domains', 10, 3 );

توضیح کد

  • آرایه $allowed_domains : لیست دامنه‌هایی که مجاز به ثبت‌نام هستند. می‌توانید دامنه‌های دلخواه خود را اضافه یا حذف کنید.
  • strrchr( $email, '@' ) : بخشی از ایمیل بعد از علامت @ را استخراج می‌کند. سپس با substr از ایندکس ۱ به بعد (برای حذف خود @) دامنه را جدا می‌کنیم.
  • in_array : بررسی می‌کند که آیا دامنه استخراج‌شده در لیست مجاز وجود دارد یا خیر.
  • $errors->add() : اگر دامنه مجاز نباشد، یک پیغام خطا به وردپرس اضافه می‌کند که در صفحه ثبت‌نام نمایش داده می‌شود.
  • add_action : تابع ما را به هوک register_post متصل می‌کند.

مرحله ۳: ذخیره تغییرات و تست

پس از ذخیره فایل، به صفحه ثبت‌نام سایت خود بروید و یک ایمیل با دامنه غیرمجاز (مثلاً test@example.com) وارد کنید. با پیغام خطای تعریف‌شده مواجه خواهید شد و ثبت‌نام انجام نمی‌شود.

نکات تکمیلی و بهبودها

  • ایمن‌سازی بیشتر: می‌توانید از is_email() وردپرس نیز برای اعتبارسنجی ساختار ایمیل استفاده کنید، اما این کد خود ایمیل‌های نامعتبر را نیز تشخیص می‌دهد.
  • دامنه‌های سازمانی: اگر می‌خواهید فقط ایمیل‌های شرکتی (مثلاً @yourcompany.com) مجاز باشند، کافی است آن را به آرایه اضافه کنید.
  • پیغام خطای کاربرپسند: متن خطا را طوری بنویسید که کاربر متوجه علت شود. می‌توانید از sprintf و implode برای نمایش لیست دامنه‌ها به صورت خودکار استفاده کنید (همانطور که در کد بالا انجام شده است).
  • ترکیب با روش‌های دیگر: این روش را می‌توانید با افزونه‌های امنیتی یا کپچا ترکیب کنید تا امنیت بیشتری ایجاد کنید.
  • عدم نیاز به افزونه: با این تکنیک، از نصب یک افزونه اضافی که ممکن است سرعت سایت را کاهش دهد، جلوگیری می‌کنید.

سوالات متداول

آیا این کد روی ثبت‌نام از طریق شبکه‌های اجتماعی (مانند ورود با گوگل) هم اثر می‌کند؟

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

آیا می‌توانم کاربران موجود را نیز بر اساس دامنه ایمیل محدود کنم؟

این کد فقط برای ثبت‌نام‌های جدید اعمال می‌شود. برای فیلتر کردن کاربران فعلی، باید از کوئری‌های دیتابیس یا افزونه‌های مدیریت کاربران استفاده کنید.

اگر دامنه‌ای را اشتباه وارد کنم، چه کار کنم؟

کافیست آرایه $allowed_domains را ویرایش کنید. تغییرات بلافاصله اعمال می‌شود.

جمع‌بندی

با اضافه کردن چند خط کد به فایل functions.php قالب فرزند، می‌توانید به سادگی ثبت‌نام در وردپرس را به دامنه‌های ایمیل خاصی محدود کنید و از ورود کاربران با ایمیل‌های موقت و فیک جلوگیری نمایید. این روش سبک، سریع و بدون نیاز به افزونه است و به شما کنترل کاملی بر روی پایگاه کاربری‌تان می‌دهد. اگر تجربه یا سوالی در این زمینه دارید، خوشحال می‌شویم در بخش نظرات با ما و سایر کاربران پرشیا وب به اشتراک بگذارید.

برای خرید رپورتاژ آگهی ارزان قیمت می توانید با کارشناسان ما در تماس باشید.

دیدگاه‌ خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پیمایش به بالا