Как удалить или изменить wp-login.php без редиректа в WordPress

Стандартный файл wp-login.php в WordPress — это точка входа для авторизации пользователей. Часто возникает задача убрать или изменить этот URL для повышения безопасности сайта — чтобы снизить риск автоматических атак или просто скрыть стандартную страницу входа. Но многие методы основаны на перенаправлении (редиректе) с wp-login.php на другой URL, что не всегда удобно и может вызывать проблемы с плагинами и производительностью.

Почему нужно удалять или менять wp-login.php без редиректа

Редиректы с wp-login.php на кастомный URL зачастую приводят к:

  • Увеличению времени загрузки страницы входа;
  • Проблемам с кэшированием и SEO;
  • Конфликтам с другими плагинами, которые обращаются к wp-login.php напрямую;
  • Сложностям при отладке и поддержке сайта.

Идеальный способ — полностью убрать публичный доступ к wp-login.php, заменив его функционал на кастомный, либо полностью запретить доступ к стандартному URL без перенаправлений.

Как полностью отключить доступ к wp-login.php

Самый простой технический способ — запретить доступ к wp-login.php через сервер (например, в .htaccess для Apache или в конфигурации nginx). Это эффективно, но не всегда удобно, если у вас несколько администраторов или внешних сервисов.

Пример для Apache — запрет доступа ко всем, кроме определённого IP:

 <Files wp-login.php>  
    Order Deny,Allow  
    Deny from all  
    Allow from 123.456.789.0  
</Files>  

Для nginx можно использовать локацию с условием по IP:

 location = /wp-login.php {  
    allow 123.456.789.0;  
    deny all;  
    fastcgi_pass php-fpm;  
    include fastcgi_params;  
}  

Такой способ полностью блокирует доступ к странице входа с нежелательных IP, без редиректов.

Создание кастомной страницы входа без использования wp-login.php

Другой подход — разработать собственную страницу входа, обрабатывающую авторизацию, и полностью отключить wp-login.php. Это требует немного больше работы, но даёт полный контроль над процессом.

Основные шаги:

  1. Создайте новый PHP-файл в корне темы или плагина, например, custom-login.php;
  2. Добавьте форму входа с полями username и password;
  3. Обработайте отправку формы с помощью функции wp_signon;
  4. При успешном входе перенаправьте пользователя в админку или на нужную страницу;
  5. Отключите доступ к wp-login.php через сервер или фильтры WordPress.

Пример простейшего кастомного файла входа — wplogin_custom_login_form():

<?php  
/*  
Template Name: Custom Login  
*/  
if ( is_user_logged_in() ) {  
    wp_redirect( admin_url() );  
    exit;  
}  
$error = '';  
if ( 'POST' == $_SERVER['REQUEST_METHOD'] ) {  
    $creds = array(  
        'user_login'    => $_POST['username'],  
        'user_password' => $_POST['password'],  
        'remember'      => isset($_POST['remember']),  
    );  
    $user = wp_signon( $creds, false );  
    if ( is_wp_error($user) ) {  
        $error = $user->get_error_message();  
    } else {  
        wp_redirect( admin_url() );  
        exit;  
    }  
}  
get_header();  
?>  
<form method="post" action="">  
    <label>Логин</label>  
    <input type="text" name="username" required />  
    <label>Пароль</label>  
    <input type="password" name="password" required />  
    <label>Запомнить меня</label>  
    <input type="checkbox" name="remember" />  
    <button type="submit">Войти</button>  
    <div style="color:red;"><?php echo esc_html($error); ?></div>  
</form>  
<?php  
get_footer();

Создайте страницу в админке и выберите для неё шаблон Custom Login, чтобы использовать эту форму.

Отключение стандартного wp-login.php через фильтры WordPress

Чтобы полностью исключить возможность доступа к wp-login.php со стороны пользователей, можно использовать фильтр login_url и хук login_init для блокировки.

Пример функции wplogin_disable_wp_login():

function wplogin_disable_wp_login() {  
    if ( strpos($_SERVER['REQUEST_URI'], 'wp-login.php') !== false ) {  
        wp_redirect( home_url() );  
        exit;  
    }  
}  
add_action( 'login_init', 'wplogin_disable_wp_login' );  

function wplogin_custom_login_url() {  
    return home_url('/custom-login/'); // URL вашей кастомной страницы входа  
}  
add_filter( 'login_url', 'wplogin_custom_login_url' );

Таким образом, попытки попасть на стандартный wp-login.php будут перенаправляться на вашу кастомную страницу без использования редиректа с самого wp-login.php.

Использование плагинов для изменения точки входа без редиректов

Если вы не хотите писать код, можно использовать готовые плагины, которые работают без редиректов, например:

  • Clearfy Pro — позволяет скрыть wp-login.php и отключить его работу;
  • WPRemark — дополнительно защищает авторизацию и меняет URL входа;
  • My Popup — можно сделать кастомное окно входа без перехода на wp-login.php.

Эти решения позволяют быстро и безопасно убрать стандартный вход, сохранив полный контроль над процессом авторизации.

Итоги и рекомендации

Удаление или изменение wp-login.php без редиректа — задача, требующая аккуратного подхода. Лучший способ — создать собственную страницу входа и запретить доступ к стандартной точке входа на уровне сервера или через хуки WordPress. Это обеспечит безопасность, стабильность и удобство поддержки сайта.

Используйте приведённые примеры кода и рассмотрите плагины из каталога WPSHOP для упрощения задачи.

Как автоматически разблокировать пользователей после блокировки в WordPress
12.05.2026
Как отключить XML-RPC в WordPress для защиты от атак
26.12.2025
Как запретить автоматический вход в WordPress через cookie
07.02.2026
Как изменить URL страницы входа в WordPress
13.11.2025
Как автоматизировать сбор логов входа в WordPress для анализа и безопасности
11.04.2026

wp-login.php - это страница входа в системе управления вордпресс. Если Вы хотите изменить внешний вид страницы входа - читайте здесь. Если вам нужно защитить админку - подробный мануал. Вы можете установить плагин Clearfy, в котором есть функция защиты админки и страницы входа.