اگر میخواهید ثبت نام در وردپرس فقط با ایمیلهای خاص انجام شود، میتوانید مشخص کنید کاربران هنگام ساخت حساب فقط از دامنههای ایمیل مورد تأیید شما استفاده کنند؛ برای مثال، فقط آدرسهای Gmail و Yahoo یا ایمیلهای سازمانی مانند example-company.com پذیرفته شوند. برای پیادهسازی این محدودیت، هم میتوان از کدنویسی PHP استفاده کرد و هم در برخی افزونههای ثبتنام و عضویت، تنظیمات آمادهای برای مدیریت دامنههای مجاز وجود دارد.
در این آموزش، روش محدود کردن دامنه ایمیل در ثبتنام استاندارد وردپرس را بدون نصب افزونه بررسی میکنیم. سپس توضیح میدهیم چگونه چند دامنه را همزمان مجاز کنید، بعضی دامنهها را مسدود کنید، کد را در محل مناسب قرار دهید و در صورت استفاده از ووکامرس یا افزونههای عضویت، محدودیت را با فرم ثبتنام سایت خود هماهنگ کنید.

چرا ثبتنام در وردپرس را به ایمیلهای خاص محدود کنیم؟
در بسیاری از سایتها، پذیرش ایمیلهای معتبر از هر دامنهای مشکلی ایجاد نمیکند؛ اما بعضی کسبوکارها به کنترل دقیقتری نیاز دارند. برای مثال، یک سامانه آموزشی ممکن است فقط به دانشجویان دارای ایمیل دانشگاهی خدمات ارائه دهد یا یک شرکت بخواهد کاربران جدید با ایمیل سازمانی ثبتنام کنند.
محدود کردن دامنه ایمیل میتواند در این موقعیتها کاربرد داشته باشد:
- پذیرش ثبتنام فقط از ایمیلهای سازمانی یا دانشگاهی مشخص؛
- جلوگیری از ثبتنام با بعضی دامنههای ایمیل موقت یا نامطلوب؛
- کنترل دسترسی اولیه کاربران به سامانههای اختصاصی؛
- ایجاد یک قانون مشخص برای پذیرش حسابهای کاربری جدید.
البته این محدودیت بهتنهایی هویت واقعی کاربران را تأیید نمیکند. برای مثال، اگر فقط gmail.com را مجاز کنید، همچنان هر فردی که یک حساب Gmail داشته باشد میتواند از آن استفاده کند. بنابراین، اگر هدف شما تأیید هویت افراد یا جلوگیری از ثبتنام رباتهاست، باید روشهای دیگری مانند تأیید ایمیل و کنترلهای ضدربات را نیز در نظر بگیرید.
پیشنهاد مطالعه: آیا اضافه کردن بخش کامنت در مقالهها در سئو مؤثر است؟
روش ثبت نام در وردپرس فقط با Gmail و Yahoo بدون افزونه
در ثبتنام استاندارد وردپرس، فیلتر PHP با نام registration_errors امکان بررسی اطلاعات واردشده و اضافه کردن خطای سفارشی را فراهم میکند. با استفاده از این فیلتر میتوان دامنه ایمیل را بررسی کرد و اگر در فهرست مجاز نبود، از ایجاد حساب جلوگیری کرد.
فرض کنیم میخواهید کاربران فقط با ایمیلهای gmail.com و yahoo.com ثبتنام کنند. کد زیر را به فایل مناسب کدهای سفارشی سایت اضافه کنید:
function pw_allow_specific_email_domains( $errors, $sanitized_user_login, $user_email ) {
// دامنههای مجاز برای ثبتنام
$allowed_domains = array(
'gmail.com',
'yahoo.com',
);
// استخراج دامنه ایمیل
$email_parts = explode( '@', strtolower( trim( $user_email ) ) );
$email_domain = end( $email_parts );
// بررسی دامنه و افزودن خطا در صورت غیرمجاز بودن
if ( ! in_array( $email_domain, $allowed_domains, true ) ) {
$errors->add(
'invalid_email_domain',
'لطفاً برای ثبتنام از ایمیل Gmail یا Yahoo استفاده کنید.'
);
}
return $errors;
}
add_filter(
'registration_errors',
'pw_allow_specific_email_domains',
10,
3
);
در این کد، آرایه $allowed_domains فهرست دامنههای مجاز را مشخص میکند. سپس دامنه بخش بعد از علامت @ استخراج میشود و با این فهرست مقایسه خواهد شد. اگر دامنه در فهرست وجود نداشته باشد، خطایی به فرایند ثبتنام اضافه میشود و وردپرس ثبتنام استاندارد را انجام نمیدهد.
نکته مهم این است که مقایسه دامنه بهصورت دقیق انجام میشود. بنابراین، صرف وجود عبارت gmail.com در بخشی از آدرس برای پذیرفته شدن آن کافی نیست. همچنین حروف بزرگ و کوچک دامنه تفاوتی ایجاد نمیکنند؛ زیرا آدرس پیش از مقایسه به حروف کوچک تبدیل میشود.
چه ایمیلهایی پذیرفته یا رد میشوند؟
با کد بالا، ایمیلهایی که دامنه دقیق آنها در فهرست مجاز قرار دارد، از نظر این قانون پذیرفته میشوند.
| نمونه ایمیل | نتیجه بررسی دامنه | دلیل |
|---|---|---|
user@gmail.com | مجاز | دامنه در فهرست وجود دارد. |
name@yahoo.com | مجاز | دامنه در فهرست وجود دارد. |
user@outlook.com | غیرمجاز | دامنه در فهرست نیست. |
name@hotmail.com | غیرمجاز | دامنه در فهرست نیست. |
user@gmail.com.example.org | غیرمجاز | دامنه کامل با gmail.com برابر نیست. |
این جدول فقط نتیجه بررسی محدودیت دامنه را نشان میدهد. برای ثبتنام موفق، آدرس ایمیل باید از نظر اعتبارسنجی وردپرس و سایر قوانین سایت نیز پذیرفته شود؛ برای مثال، ایمیل تکراری ممکن است به دلایل دیگری رد شود.
کد را کجای وردپرس قرار دهیم؟
برای اجرای کد، باید آن را در بخشی قرار دهید که هنگام ثبتنام بارگذاری شود. سه روش رایج وجود دارد:
- قالب فرزند (Child Theme): میتوانید کد را به فایل
functions.phpقالب فرزند اضافه کنید. در این حالت، بهروزرسانی قالب اصلی معمولاً باعث حذف تغییر شما نمیشود. - افزونه اختصاصی: میتوانید کد را در یک افزونه کوچک مخصوص سایت قرار دهید. این روش برای نگهداری بلندمدت کدهای سفارشی معمولاً مناسبتر است.
- ابزار مدیریت کدهای PHP: در صورت استفاده از افزونه معتبر مدیریت کد، میتوانید کد را در آن قرار دهید و تنظیمات اجرای آن را مطابق نیاز سایت انجام دهید.
اگر کد را در فایل functions.php قرار میدهید، مسیر معمول در پیشخوان وردپرس از بخش نمایش و ویرایشگر فایل پوسته قابل دسترسی است؛ البته این مسیر ممکن است با توجه به نسخه وردپرس، قالب و تنظیمات میزبانی متفاوت باشد. ویرایش مستقیم فایل قالب اصلی انتخاب مناسبی برای تغییرات مهم نیست، چون با بهروزرسانی قالب ممکن است کد از بین برود.
پیش از هر تغییری از سایت نسخه پشتیبان بگیرید و کد را ابتدا در محیط آزمایشی یا زمانی که امکان بررسی و بازگردانی تغییرات دارید، تست کنید. خطای نحوی PHP ممکن است باعث اختلال در بارگذاری سایت شود.
پیشنهاد مطالعه: بهترین افزونههای امنیت سایت برای وردپرس کدام هستند؟

آیا میتوان فقط ایمیل سازمانی را مجاز کرد؟
بله. اگر میخواهید فقط کارکنان یک شرکت یا اعضای یک سازمان امکان ثبتنام داشته باشند، کافی است دامنه ایمیل سازمانی را در فهرست مجاز قرار دهید. برای مثال، اگر دامنه شرکت شما example-company.com است، آرایه دامنهها را به شکل زیر تغییر دهید:
$allowed_domains = array(
'example-company.com',
);
با این تنظیم، آدرس ali@example-company.com از نظر دامنه مجاز است، اما ali@gmail.com پذیرفته نمیشود. توجه کنید که دامنه mail.example-company.com نیز بهصورت خودکار مجاز نخواهد بود؛ زیرا با دامنه اصلی برابر نیست. اگر لازم است زیردامنهها هم پذیرفته شوند، باید قانون جداگانهای برای آن تعریف کنید.
اگر هدف شما محدود کردن ثبتنام به کارکنان واقعی شرکت است، مجاز بودن دامنه سازمانی بهتنهایی کافی نیست؛ هر شخصی که بتواند به یک آدرس از آن دامنه دسترسی داشته باشد، ممکن است از این مسیر استفاده کند. در چنین شرایطی، تأیید ایمیل یا تأیید حساب توسط مدیر سیستم میتواند ضروری باشد.
چگونه چند دامنه ایمیل را همزمان مجاز کنیم؟
اگر میخواهید علاوه بر Gmail و Yahoo، دامنههای اختصاصی دیگری نیز پذیرفته شوند، کافی است آنها را به آرایه $allowed_domains اضافه کنید. برای مثال:
$allowed_domains = array(
'gmail.com',
'yahoo.com',
'example.com',
'example.org',
);
هر دامنه باید بهصورت یک رشته جداگانه در آرایه قرار گیرد. نام دامنه را بدون علامت @ وارد کنید؛ برای مثال، example.com درست است، نه @example.com.
در صورتی که فهرست دامنهها طولانی است یا قرار است مرتب تغییر کند، نگهداری آن در تنظیمات یک افزونه اختصاصی یا استفاده از افزونه ثبتنام مناسب ممکن است از ویرایش مکرر کد سادهتر باشد.
چطور فقط بعضی دامنههای ایمیل را مسدود کنیم؟
گاهی بهجای محدود کردن ثبتنام به چند دامنه مشخص، میخواهید کاربران بتوانند با بیشتر سرویسهای ایمیل ثبتنام کنند، اما چند دامنه خاص مسدود شوند. در این حالت میتوانید از فیلتر زیر استفاده کنید:
function pw_block_specific_email_domains( $errors, $sanitized_user_login, $user_email ) {
$blocked_domains = array(
'tempmail.com',
'example.net',
);
$email_parts = explode( '@', strtolower( trim( $user_email ) ) );
$email_domain = end( $email_parts );
if ( in_array( $email_domain, $blocked_domains, true ) ) {
$errors->add(
'blocked_email_domain',
'ثبتنام با این دامنه ایمیل امکانپذیر نیست.'
);
}
return $errors;
}
add_filter(
'registration_errors',
'pw_block_specific_email_domains',
10,
3
);
در این روش، فقط دامنههایی که در آرایه $blocked_domains قرار دارند، توسط این قانون رد میشوند. برای مثال، user@tempmail.com پذیرفته نمیشود، اما یک ایمیل از دامنه دیگری ممکن است پذیرفته شود؛ البته به شرط اینکه سایر قوانین ثبتنام نیز اجازه دهند.
نکته مهم: این کد فقط دامنه کامل واردشده در فهرست را مسدود میکند. اگر قصد دارید دامنههای فرعی یا تعداد زیادی از سرویسهای ایمیل موقت را نیز شناسایی کنید، باید منطق بررسی را متناسب با نیاز خود توسعه دهید یا از راهکار تخصصیتری استفاده کنید.
پیشنهاد مطالعه: خطای ایجاد اتصال به پایگاه داده در وردپرس چیست؟
چرا نباید فقط عبارت Gmail را در ایمیل جستوجو کنیم؟
برای تشخیص دامنه ایمیل، جستوجوی یک عبارت مانند gmail.com در کل آدرس روش دقیقی نیست. در چنین روشی ممکن است یک آدرس نامعتبر یا آدرسی با دامنهای متفاوت، صرفاً به دلیل داشتن آن عبارت در بخش دیگری از متن اشتباهاً پذیرفته شود.
روش مناسب این است که بخش دامنه ایمیل بهصورت مستقل استخراج شود و سپس با فهرست مجاز یا مسدودشده مقایسه شود. کدهای این آموزش همین کار را انجام میدهند و از مقایسه دقیق دامنه استفاده میکنند.
با این حال، بررسی دامنه با بررسی کامل اعتبار ایمیل تفاوت دارد. فیلتر مورد استفاده در این آموزش برای اعمال محدودیت دامنه در ثبتنام استاندارد وردپرس است؛ بررسی صحت آدرس و سایر خطاهای ثبتنام همچنان باید در مسیر معمول وردپرس انجام شود.
اگر فرم ثبتنام با ووکامرس یا افزونه عضویت ساخته شده باشد چه؟
این یکی از مهمترین مواردی است که باید پیش از اجرای کد بررسی کنید. فیلتر registration_errors برای فرایند استاندارد ثبتنام وردپرس کاربرد دارد، اما همه فرمهای ثبتنام در سایت الزاماً از همین مسیر استفاده نمیکنند.
برای مثال، ممکن است کاربران از فرم اختصاصی ووکامرس، افزونه عضویت، سامانه آموزش آنلاین یا یک فرم سفارشی ثبتنام کنند. بعضی از این ابزارها اعتبارسنجی و هوکهای اختصاصی خود را دارند؛ در نتیجه ممکن است کد بالا روی فرم استاندارد وردپرس کار کند، اما در فرم دیگر اعمال نشود.
اگر از افزونه ثبتنام استفاده میکنید، این موارد را بررسی کنید:
- آیا افزونه تنظیم آمادهای برای مجاز یا مسدود کردن دامنه ایمیل دارد؟
- آیا فرم موردنظر از فرایند استاندارد ثبتنام وردپرس استفاده میکند؟
- آیا افزونه برای اعتبارسنجی ایمیل، فیلتر یا هوک اختصاصی معرفی کرده است؟
- آیا محدودیت روی همه فرمهای ثبتنام اعمال میشود یا فقط روی یک فرم مشخص؟
در برخی افزونهها میتوان دامنههای مجاز و مسدود را از پنل تنظیمات مدیریت کرد؛ برای نمونه، مستندات افزونه Ultimate Member روش مسدود کردن دامنه ایمیل در فرم ثبتنام را توضیح میدهد. مشاهده راهنمای رسمی Ultimate Member.

در مورد ووکامرس نیز باید نسخه و افزونههای فعال سایت را در نظر بگیرید. اگر قابلیت ثبتنام یا تأیید کاربران توسط یک افزونه دیگر مدیریت میشود، تنظیمات همان ابزار را بررسی کنید یا از هوک مخصوص آن استفاده کنید. صرف اضافه کردن کد عمومی وردپرس، بدون آزمایش فرم واقعی سایت، تضمین نمیکند که تمام مسیرهای ثبتنام محدود شده باشند.
پیشنهاد مطالعه: محافظت از ویدئو در وردپرس چیست و چرا اهمیت دارد؟
آیا این محدودیت روی ایجاد کاربر از پیشخوان وردپرس هم اثر میگذارد؟
کد ارائهشده برای اعتبارسنجی ثبتنام استاندارد کاربران از فرم عمومی وردپرس است. ایجاد یا ویرایش کاربر توسط مدیر از بخش کاربران پیشخوان، مسیر جداگانهای دارد و نباید فرض کرد همین فیلتر تمام روشهای ایجاد حساب را کنترل میکند.
اگر میخواهید قانون دامنه ایمیل علاوه بر ثبتنام عمومی، هنگام ایجاد کاربران توسط مدیر یا از طریق API و افزونههای دیگر نیز اجرا شود، باید همه مسیرهای ایجاد کاربر را بررسی کنید و برای هر مسیر در صورت نیاز اعتبارسنجی متناسبی در نظر بگیرید.
بعد از اضافه کردن کد، چه مواردی را تست کنیم؟
پس از اضافه کردن کد، فقط یک ثبتنام موفق را بررسی نکنید. چند حالت متفاوت را آزمایش کنید تا مطمئن شوید محدودیت مطابق انتظار عمل میکند:
- یک ایمیل از دامنه مجاز وارد کنید و ثبتنام را انجام دهید.
- یک ایمیل از دامنهای خارج از فهرست مجاز وارد کنید و پیام خطا را بررسی کنید.
- اگر چند دامنه مجاز دارید، هر کدام را جداگانه آزمایش کنید.
- یک ایمیل با حروف بزرگ و کوچک در بخش دامنه را بررسی کنید.
- ایمیل نامعتبر یا ایمیل تکراری را آزمایش کنید تا اعتبارسنجیهای معمول وردپرس نیز درست کار کنند.
- اگر از ووکامرس یا افزونه عضویت استفاده میکنید، فرم ثبتنام همان افزونه را جداگانه آزمایش کنید.
- پس از ثبتنام موفق، مطمئن شوید کاربر نقش پیشفرض مناسب را دریافت میکند و ایمیلهای موردنیاز ارسال میشوند.
اگر ثبتنام با دامنه غیرمجاز همچنان انجام میشود، ابتدا بررسی کنید کد در فایل درست قرار گرفته و بدون خطای PHP بارگذاری میشود. سپس مشخص کنید فرم موردنظر از کدام مسیر ثبتنام استفاده میکند. در صورت فعال بودن کش یا بهینهسازهای خاص، آنها را نیز در فرایند عیبیابی در نظر بگیرید؛ هرچند کش بهتنهایی معمولاً دلیل اصلی اجرا نشدن اعتبارسنجی سمت سرور نیست.
آیا محدود کردن دامنه ایمیل امنیت وردپرس را افزایش میدهد؟
محدود کردن دامنه ایمیل یک قانون کنترلی برای ثبتنام است، اما بهتنهایی راهکار کامل امنیتی محسوب نمیشود. اگر هدف جلوگیری از حسابهای جعلی یا ثبتنام خودکار است، رباتها ممکن است همچنان با دامنههای مجاز حساب بسازند.
با توجه به نوع سایت، میتوانید از تأیید ایمیل، CAPTCHA یا راهکار ضدربات معتبر، محدودسازی درخواستهای مشکوک و در صورت نیاز تأیید دستی حسابها استفاده کنید. انتخاب این روشها باید با تجربه کاربری و میزان حساسیت اطلاعات سایت متناسب باشد؛ اعمال محدودیتهای بیش از حد ممکن است ثبتنام کاربران واقعی را دشوار کند.
اگر نخواهیم کدنویسی کنیم، چه راهی داریم؟
اگر ترجیح میدهید از کد PHP استفاده نکنید، میتوانید افزونههای ثبتنام و عضویت را بررسی کنید. برخی از آنها امکان تعریف فهرست دامنههای مجاز یا مسدود را در تنظیمات فراهم میکنند؛ با این حال، وجود این قابلیت به افزونه و نسخه آن بستگی دارد و ممکن است در نسخه رایگان در دسترس نباشد.
هنگام انتخاب افزونه، علاوه بر امکان محدود کردن دامنه ایمیل، به سازگاری آن با نسخه وردپرس، ووکامرس یا افزونه عضویت سایت، سابقه بهروزرسانی، مستندات و نیازهای امنیتی خود توجه کنید. اگر سایت شما فقط از ثبتنام استاندارد وردپرس استفاده میکند و به قابلیت دیگری نیاز ندارد، روش کدنویسی بالا میتواند راهکاری سبک و ساده باشد.
پیشنهاد مطالعه: حالت تعمیر و نگهداری وردپرس چیست؟
اشتباهات رایج هنگام محدود کردن ایمیل ثبتنام
هنگام اجرای این قابلیت، چند اشتباه میتواند باعث از دست رفتن تغییرات یا اختلال در ثبتنام شود:
- ویرایش قالب اصلی بدون نسخه پشتیبان: ممکن است تغییرات با بهروزرسانی قالب از بین بروند یا خطای PHP ایجاد شود.
- آزمایش فقط روی یک فرم: سایتهایی که چند سیستم ثبتنام دارند، باید هر مسیر را جداگانه بررسی کنند.
- اشتباه گرفتن دامنه با آدرس کامل ایمیل: در فهرست دامنهها باید مقادیری مانند
gmail.comقرار بگیرد، نه یک آدرس کامل ایمیل. - تصور تأیید هویت با مجاز کردن دامنه: محدودیت دامنه ثابت نمیکند کاربر همان فرد یا کارمند موردنظر است.
- نادیده گرفتن تجربه کاربر: اگر فهرست مجاز بیش از حد محدود باشد، ممکن است کاربران واقعی نتوانند ثبتنام کنند.
سؤالات متداول درباره ثبت نام در وردپرس فقط با ایمیلهای خاص
آیا میتوان ثبتنام وردپرس را فقط به Gmail محدود کرد؟
بله. کافی است در آرایه دامنههای مجاز، فقط gmail.com را قرار دهید. در این حالت، ایمیلهای دامنههای دیگر توسط این قانون پذیرفته نمیشوند؛ البته باید مسیر ثبتنامی که کاربران استفاده میکنند نیز با این کد سازگار باشد.
آیا میتوان بهجای دامنههای مجاز، چند دامنه را مسدود کرد؟
بله. با استفاده از روش فهرست مسدودشده میتوانید دامنههای مشخصی را رد کنید و سایر دامنهها را از این نظر آزاد بگذارید. این روش برای مسدود کردن چند دامنه خاص مناسب است، اما بهتنهایی همه سرویسهای ایمیل موقت یا آدرسهای مشکوک را شناسایی نمیکند.
چرا کد محدودیت ایمیل روی فرم ثبتنام من کار نمیکند؟
یکی از دلایل احتمالی این است که فرم ثبتنام از مسیر استاندارد وردپرس استفاده نمیکند. اگر فرم توسط ووکامرس، افزونه عضویت یا یک سیستم سفارشی ساخته شده است، باید هوکها و تنظیمات اعتبارسنجی همان سیستم بررسی شوند.
آیا محدود کردن دامنه ایمیل جلوی ثبتنام اسپم را میگیرد؟
ممکن است بخشی از ثبتنامهای ناخواسته را کاهش دهد، اما راهکار کامل ضداسپم نیست. برای کنترل بهتر ثبتنامهای خودکار، بسته به نیاز سایت از تأیید ایمیل، CAPTCHA و محدودسازی درخواستها نیز استفاده کنید.
آیا میتوان ثبتنام را فقط با ایمیل سازمانی انجام داد؟
بله. دامنه سازمانی را در فهرست مجاز قرار دهید و سایر دامنهها را رد کنید. اگر قرار است فقط کارکنان واقعی سازمان حساب بسازند، بهتر است در کنار این محدودیت از تأیید ایمیل سازمانی یا تأیید مدیر نیز استفاده شود.
جمعبندی
برای اینکه ثبت نام در وردپرس فقط با ایمیلهای خاص انجام شود، میتوانید در ثبتنام استاندارد وردپرس از فیلتر registration_errors استفاده کنید. این روش امکان مجاز کردن دامنههایی مانند gmail.com و yahoo.com، پذیرش ایمیلهای سازمانی یا مسدود کردن دامنههای مشخص را فراهم میکند.
با این حال، پیش از اجرا باید مشخص کنید کاربران از کدام فرم ثبتنام میکنند. اگر سایت از ووکامرس یا افزونه عضویت استفاده میکند، ممکن است به تنظیمات یا هوک اختصاصی همان ابزار نیاز داشته باشید. همچنین کد را با نسخه پشتیبان و آزمایش مناسب اجرا کنید و محدودیت دامنه را جایگزین تأیید هویت یا راهکارهای ضدربات ندانید.
اگر برای تنظیم ثبتنام، رفع خطاهای PHP یا پیادهسازی قابلیتهای اختصاصی در سایت خود به کمک نیاز دارید، میتوانید خدمات پرشیا وب را بررسی کنید.