WordPress ログインurlを変更して安全対策

2023年7月10日

WordPress管理画面にログインする際のurlを/wp-adminから独自urlに変更する。
ドメインの後に付与するファイル名の新たなphpファイルを作る。
https://kureai.info/kureai-◯◯◯◯-login.php(例)
こんな感じ。
プラグインを使わなくてもとりあえずの安全対策。
ここのkureai-◯◯◯◯-login.phpの部分。
このファイルに以下を記述。

<?php
define( 'LOGIN_CHANGE', sha1( 'keyword' ) );
require_once './wp-login.php';
?>

これをWordpressのルートに保存。

次にfunctions.phpに以下を記述する。

// WordPressの管理画面ログインURLを変更する
define( 'LOGIN_CHANGE_PAGE', 'kureai-◯◯◯◯-login.php' );

// 指定以外のログインURLはTOPページへリダイレクト
if ( ! function_exists( 'login_change_init' ) ) {
  function login_change_init() {
    if ( !defined( 'LOGIN_CHANGE' ) || sha1( 'keyword' ) != LOGIN_CHANGE ) {
      wp_safe_redirect( home_url() );
      exit;
    }
  }
}
add_action( 'login_init', 'login_change_init' );

// ログイン済みか新設のログインURLの場合はwp-login.phpを置き換える
if ( ! function_exists( 'login_change_site_url' ) ) {
  function login_change_site_url( $url, $path, $orig_scheme, $blog_id ) {
    if ( $path == 'wp-login.php' &&
      ( is_user_logged_in() || strpos( $_SERVER['REQUEST_URI'], LOGIN_CHANGE_PAGE ) !== false ) )
      $url = str_replace( 'wp-login.php', LOGIN_CHANGE_PAGE, $url );
    return $url;
  }
}
add_filter( 'site_url', 'login_change_site_url', 10, 4 );

// ログアウト時のリダイレクト先の設定
if ( ! function_exists( 'login_change_wp_redirect' ) ) {
  function login_change_wp_redirect( $location, $status ) {
    if ( strpos( $_SERVER['REQUEST_URI'], LOGIN_CHANGE_PAGE ) !== false )
      $location = str_replace( 'wp-login.php', LOGIN_CHANGE_PAGE, $location );
    return $location;
  }
}
add_filter( 'wp_redirect', 'login_change_wp_redirect', 10, 2 );
PAGE TOP