Как изменить страницу входа в админ панель WordPress

Привет, друзья!
В этот статье разберем как обезопасить сайт на Wordpress и запретить посторонним пользователям заходить на страницу входа в админ панель.

Почему это сделать нужно?

Я подобрал сложную пару логин-пароль, но из-за того что адрес страницы входа в админ панель знали все, злоумышленники постоянно пытались войти в админку. Антивирус отправлял письма об атаках каждый день. Я понял что адрес страницы для входа нужно менять.

панель антивируса на dev-postnov.ru

В чем суть?

Старый файл входа в админ-панель скопируем, заменим данные, переименуем и загрузим обратно. Название будущего файла — адрес для входа в админ панель. После этого сделаем так чтобы по wp-admin, wp-login.php нельзя было зайти на сайт.

Это была карта статьи, теперь подробнее о каждом шаге.

Вам нужно зайти на ваш сайт через файловый менеджер или через ftp-соединение. В корне сайта найдите файл wp-login.php

нашли файл на хостинге

Скопируйте его себе на компьютер или продублируйте в той же папке.

продублировали файл

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

Если вы хотите входить, а админку по адресу yousite.ru/mygrandmother, wp-login нужно менять на mygrandmother

нашли все совпадения с wp-login

Теперь нужно заменить их на наше название, в данном случае mygrandmother

Заменили? Молодцы 🙂
Теперь переименуем файл, который редактировали в mygrandmother. php

новый переименованный файл

Заходим на сайт чтобы проверить работу нашей новой страницы.

Проверили новый адрес входа в админ-панель

Готово! Теперь любопытные носы вряд-ли будут околачиваться на этой странице. Они попросту не догадаются об ее названии.

Что мы сделали?

  • Откопировали файл wp-login.php. В копии заменили wp-login на mygrandmother.
  • После замены переименовали файл в mygrandmother. php

Вместо mygrandmother можете использовать любое имя, которое вам по душе.

Что дальше?

/mygrandmother.php работает, но по адресам wp-admin, wp-login все еще можно зайти. Нам нужно сделать перенаправление (редирект) с этих страниц на главную страницу.

Для добавления редиректа нам нужно найти файл functions. php в теме сайта.
Все темы сайта лежат по адресу: ваш-сайт.ru/wp-content/themes/

нашли файл functions. php

Открываем файл function. php и идем в самый конец файла.

Файл может заканчиваться таким символом: ?>.
Если он есть — нужно будет вставлять код там.

Место для вставки кода

Если нет, добавляйте просто в конец файла.

Код для редиректа с wp-admin:

/* ============================
    Редирект с wp-admin
=========================== */

add_action( 'init', 'blockusers_init' );

function blockusers_init() {
    if ( is_admin() && ! current_user_can( 'administrator' ) &&
    ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
        wp_redirect( home_url( '/404/' ) );
        exit;
    }
}

Код для редиректа с wp-login.php:

/* ============================
    Редирект с wp-login.php
=========================== */

add_action('init','redirect_login_page');

function redirect_login_page() {
    $page_viewed = basename($_SERVER['REQUEST_URI']);
    $result = strpos($page_viewed, 'wp-login.php');

    if($result !== false) {
        wp_redirect( home_url( '/404/' ) );
        exit;
    }
}

Заменяем все ссылки с wp-login на нашу страницу

/* ============================
    Смена адресов на новый
=========================== */

add_filter('site_url', 'wplogin_filter', 10, 3);

function wplogin_filter( $url, $path, $orig_scheme ) {
    $old = array( "/(wp-login.php)/");
    $new = array( "mygrandmother.php");
    return preg_replace( $old, $new, $url, 1);
}

Вот что получилось в итоге:

/* ============================
    Редирект с wp-admin
=========================== */

add_action( 'init', 'blockusers_init' );

function blockusers_init() {
    if ( is_admin() && ! current_user_can( 'administrator' ) &&
    ! ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) {
        wp_redirect( home_url( '/404/' ) );
        exit;
    }
}

/* ============================
    Редирект с wp-login.php
=========================== */

add_action('init','redirect_login_page');

function redirect_login_page() {
    $page_viewed = basename($_SERVER['REQUEST_URI']);
    $result = strpos($page_viewed, 'wp-login.php');

    if($result !== false) {
        wp_redirect( home_url( '/404/' ) );
        exit;
    }
}

/* ============================
    Смена адресов на новый
=========================== */

add_filter('site_url', 'wplogin_filter', 10, 3);

function wplogin_filter( $url, $path, $orig_scheme ) {
    $old = array( "/(wp-login.php)/");
    $new = array( "mygrandmother.php");
    return preg_replace( $old, $new, $url, 1);
}

Если вы поменяете тему, перенаправления не будет, так как файл functions. php будет другой. Чтобы все работало в новой теме, нужно перенести код редиректа.

Теперь на страницу входа в админ панель можно будет зайти только по адресу mygrandmother. C wp-admin и wp-login нас будут переводить на главную страницу.