워드프레스 기본 로그인 www.example.com/wp-login.php입니다. 아래에 소개하는 코드 스니펫을 사용하면 기본 워드프레스 로그인 URL을 Ultimate Member 로그인 페이지 URL인 www.example.com/login/으로 변경할 수 있습니다.
워드프레스 기본 로그인 URL을 Ultimate Member 로그인 페이지로 바꾸기
멤버십 플러그인인 Ultimate Member를 사용하면 회원 역할에 따라 특정 페이지나 페이지 내의 특정 콘텐츠에 대한 접근을 정교하게 제어할 수 있습니다.
워드프레스 기본 로그인 URL에 접속할 때 UM 로그인 페이지 URL로 이동하도록 하려면 다음과 같은 코드 스니펫을 테마의 함수 파일(차일드 테마를 설치하시고 차일드 테마 내의 functions.php 파일)에 추가할 수 있습니다.
/**
* Replace login page URL to UM login page, 로그인 페이지 URL을 UM 로그인 페이지로 교체
* @param string $login_url
* @param string $redirect
* @return string
*/
function um_login_url( $login_url, $redirect ){
$page_id = UM()->options()->get( 'core_login' );
if ( get_post( $page_id ) ) {
$login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), get_permalink( $page_id ) );
}
return $login_url;
}
add_filter('login_url', 'um_login_url', 10, 2);
위의 코드는 Ultimate Member 매뉴얼 사이트에 소개된 코드입니다.
하지만 저는 최신 워드프레스 버전에서 테스트해보니 example.com/wp-admin으로 접속 시 UM 로그인 페이지로 리디렉션되지만 example.com/wp-login.php 페이지로 접속하면 UM 로그인 페이지로 이동하지 않았습니다.
만약 이러한 현상이 나타난다면 다음과 같은 코드로 테스트해볼 수 있습니다.
function um_login_url( $login_url, $redirect ) {
$page_id = UM()->options()->get( 'core_login' );
if ( get_post( $page_id ) ) {
$login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), get_permalink( $page_id ) );
}
return $login_url;
}
add_filter('login_url', 'um_login_url', 10, 2);
function redirect_to_um_login() {
$requested_url = $_SERVER['REQUEST_URI'];
$is_wp_login_php = basename( $_SERVER['SCRIPT_NAME'] ) === 'wp-login.php';
$is_wp_admin = strpos( $requested_url, '/wp-admin/' ) !== false;
if ( $is_wp_login_php || $is_wp_admin ) {
$um_login_page_id = UM()->options()->get( 'core_login' );
if ( get_post( $um_login_page_id ) ) {
$redirect = ( isset( $_REQUEST['redirect_to'] ) ) ? urlencode( $_REQUEST['redirect_to'] ) : '';
$um_login_page_url = add_query_arg( 'redirect_to', $redirect, get_permalink( $um_login_page_id ) );
wp_redirect( $um_login_page_url );
exit;
}
}
}
add_action( 'wp_loaded', 'redirect_to_um_login' );
또 다른 방법으로 다음과 같은 코드로도 테스트해볼 수 있습니다.
function um_login_url( $login_url, $redirect ) {
$page_id = UM()->options()->get( 'core_login' );
if ( get_post( $page_id ) ) {
$login_url = add_query_arg( 'redirect_to', urlencode( $redirect ), get_permalink( $page_id ) );
}
return $login_url;
}
add_filter('login_url', 'um_login_url', 10, 2);
function redirect_to_um_login() {
if ( $GLOBALS['pagenow'] === 'wp-login.php' && !isset( $_REQUEST['action'] ) ) {
$um_login_page_id = UM()->options()->get( 'core_login' );
if ( get_post( $um_login_page_id ) ) {
$redirect = ( isset( $_REQUEST['redirect_to'] ) ) ? urlencode( $_REQUEST['redirect_to'] ) : '';
$um_login_page_url = add_query_arg( 'redirect_to', $redirect, get_permalink( $um_login_page_id ) );
wp_redirect( $um_login_page_url );
exit;
}
}
}
add_action( 'init', 'redirect_to_um_login' );
위의 코드를 사용하면 wp-login.php와 wp-admin 모두에 대하여 UM 로그인 페이지로 이동하게 됩니다.
댓글 남기기