تغییر آدرس ورود وردپرس با کدنویسی در فایل functions.php و مخفی کردن صفحه لاگین

تغییر آدرس ورود پیش‌فرض وردپرس (wp-admin) یکی از اولین توصیه‌های امنیتی است. اکثر کاربران برای این کار از افزونه‌هایی مانند WPS Hide Login استفاده می‌کنند. اما اگر شما یک توسعه‌دهنده هستید یا سرعت سایت برایتان حیاتی است، چرا باید برای چنین کار ساده‌ای یک افزونه نصب کنید؟ در این آموزش، نحوه تغییر آدرس ورود را با چند خط کد ساده یاد می‌گیریم.

چرا روش کدنویسی بهتر از افزونه است؟

هر افزونه‌ای که نصب می‌کنید، مقداری کد اضافه به هسته سایت تزریق می‌کند و ممکن است در دیتابیس ردپا به جا بگذارد. در روش دستی:

  • سبک‌تر است: هیچ فشاری به سرور وارد نمی‌کند.
  • پایدارتر است: نگران آپدیت نشدن افزونه یا تداخل آن با دیگر پلاگین‌ها نیستید.
  • غیرقابل حدس است: منطق آن کاملاً اختصاصی شماست.

منطق کار: مخفی‌سازی به جای تغییر نام

در این روش، ما فایل wp-login.php را تغییر نام نمی‌دهیم (چون با آپدیت وردپرس دوباره برمی‌گردد). در عوض، ما یک "شرط عبور" تعیین می‌کنیم.

ما به وردپرس می‌گوییم:
"اگر کسی صفحه لاگین را باز کرد اما کلمه رمز مخصوص ما را در آدرس نداشت، او را به صفحه اصلی سایت پرت کن!"


مراحل اجرای کد تغییر آدرس

گام ۱: دسترسی به فایل functions.php

وارد هاست خود (سی‌پنل یا دایرکت‌ادمین) شوید. به مسیر wp-content/themes/YOUR_THEME بروید (به جای YOUR_THEME پوشه قالب فعال خود را باز کنید). فایل functions.php را پیدا کرده و برای ویرایش باز کنید.

⚠️ نکته مهم: قبل از هر تغییری، یک نسخه پشتیبان (دانلود) از این فایل بگیرید تا در صورت بروز خطا بتوانید آن را بازگردانید.

گام ۲: قرار دادن کد امنیتی

قطعه کد زیر را دقیقاً در انتهای فایل functions.php کپی کنید:


/**
 * تغییر آدرس ورود وردپرس بدون افزونه
 * Author: AronSoft
 */
function aronsoft_secure_login_page() {
    // 1. کلمه رمز اختصاصی خود را اینجا بنویسید (به جای my_secret_key)
    $secret_query = 'my_secret_key'; 

    // 2. بررسی آدرس: آیا کاربر در صفحه لاگین است؟ آیا رمز را ندارد؟
    $is_login_page = strpos( $_SERVER['REQUEST_URI'], 'wp-login.php' ) !== false;
    $is_register_page = strpos( $_SERVER['REQUEST_URI'], 'wp-register.php' ) !== false;
    
    if ( ( $is_login_page || $is_register_page ) && ! isset( $_GET[$secret_query] ) ) {
        // 3. اگر شرط برقرار نبود، ریدارکت به صفحه اصلی
        wp_safe_redirect( home_url() );
        exit;
    }
}
add_action( 'login_init', 'aronsoft_secure_login_page' );
    

در کد بالا، عبارت my_secret_key همان رمز عبور شماست. می‌توانید آن را به هر چیزی (مثلاً vorood یا admin123) تغییر دهید.


چگونه وارد سایت شویم؟

از این پس، اگر آدرس site.com/wp-admin یا site.com/wp-login.php را وارد کنید، به صفحه اصلی هدایت می‌شوید (انگار که اصلاً پنل ادمینی وجود ندارد).

برای ورود، باید کلمه رمز را به صورت کوئری (Query String) به انتهای آدرس اضافه کنید:

your-site.com/wp-login.php?my_secret_key


سوالات متداول و عیب‌یابی

اگر کلمه رمز را فراموش کردم چه کنم؟

اصلاً نگران نباشید. کافیست وارد پنل هاست شوید، فایل functions.php را باز کنید و کدی که اضافه کردید را پاک کنید. بلافاصله سایت به حالت عادی برمی‌گردد.

آیا این روش با افزونه‌های کش تداخل دارد؟

معمولاً خیر. اما اگر از افزونه‌های کش سنگین استفاده می‌کنید، مطمئن شوید که صفحه لاگین را از کش شدن مستثنی کرده باشید (که به صورت پیش‌فرض در اکثر افزونه‌ها مستثنی است).


هنوز کارهای امنیتی تمام نشده!

تغییر آدرس ورود فقط یکی از ۶ اقدام حیاتی برای امنیت وردپرس است. آیا فایل XML-RPC را بسته‌اید؟ آیا جلوی افشای نام کاربری را گرفته‌اید؟

⬅️ بازگشت به مقاله اصلی: ۶ قفل امنیتی که باید بلافاصله بعد از نصب وردپرس فعال کنید

نظرات کاربران

captcha Code
اشتراک‌گذاری: