WordPressでログイン画面のURLを変更する方法です。
今回はプラグインを使わずに、functions.phpで変更します。
ログイン画面用ファイルの作成
ログイン画面用のファイルを作成します。
今回は『test-login.php』というファイルを作成し、
『wp-login.php』→『test-login.php』で変更できるようにします。
ファイルの内容
ファイルには、wp-login.phpを呼び出すように記述します。
<?php define( 'LOGIN_CHANGE', sha1( 'keyword' ) ); require_once './wp-login.php';
functions.phpの変更
下記を追記します。
// ログインURLの変更
define( 'LOGIN_CHANGE_PAGE', 'test-login.php' );
add_action( 'login_init', 'login_change_init' );
add_filter( 'site_url', 'login_change_site_url', 10, 4 );
add_filter( 'wp_redirect', 'login_change_wp_redirect', 10, 2 );
// 指定以外のログインURLは403エラーにする
if ( ! function_exists( 'login_change_init' ) ) {
function login_change_init() {
if ( !defined( 'LOGIN_CHANGE' ) || sha1( 'keyword' ) != LOGIN_CHANGE ) {
status_header( 403 );
exit;
}
}
}
// ログイン済みか新設のログイン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;
}
}
// ログアウト時のリダイレクト先の設定
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;
}
}
これで、ログインURLが変更されます。
