워드프레스에서 로그인 / 로그아웃 후 페이지 이동하는 방법에 대해 알아보자.
로그인
어디서든 로그인할 때 리다이렉트
functions.php에 추가
function redirect_after_login( $redirect_to, $request, $user ) { return ( is_array( $user->roles ) && in_array( 'administrator', $user->roles ) ) ? admin_url() : get_permalink(); } add_filter( 'login_redirect', 'redirect_after_login', 10, 3 );
사용된 코드 설명
function redirect_after_login( … )
:
redirect_after_login 함수를 생성한다.
return … ;
:
값을 리턴한다.
( is_array( $user->roles ) && in_array( ‘administrator’, $user->roles ) ) ?
:
사용자인지 관리자인지 확인한다.
admin_url() : get_permalink()
:
관리자면 관리자 페이지로 사용자면 현재 페이지 그대로 보여준다.
위 코드가 작동하지 않을 때
function redirect_after_login() { global $redirect_to; if (!isset($_GET['redirect_to'])) { $redirect_to = home_url() . '/wp-login.php?redirect_to=' . urlencode( $_SERVER['REQUEST_URI'] ); } } add_action('login_form', 'redirect_after_login');
로그인 링크로 로그인할 때 리다이렉트
<a href="<?php echo wp_login_url( 이동할 페이지 URL ); ?>" title="로그인">로그인</a>
이동할 페이지 URL에 $_SERVER[‘REQUEST_URI’] / get_permalink() / home_url() / 등을 입력해도 좋다.
로그아웃
어디서든 로그아웃할 때 리다이렉트
functions.php에 추가
function redirect_after_logout() { wp_safe_redirect( home_url() ); exit(); } add_action( 'wp_logout','redirect_after_logout' );
사용된 코드 설명
function redirect_after_logout()
:
redirect_after_logout 함수를 생성한다.
wp_safe_redirect( home_url() ); exit();
:
워드프레시의 메인 페이지를 보여준다. wp_safe_redirect는 자동으로 종료되지 않으므로 exit();가 같이 따라와야한다.
로그아웃 링크로 로그아웃할 때 리다이렉트
로그아웃 버튼 추가하고자 하는 위치에 추가
<a href="<?php echo wp_logout_url( 이동할 페이지 URL ); ?> title="로그아웃">로그아웃</a>
이동할 페이지 URL에 $_SERVER[‘REQUEST_URI’] / get_permalink() / home_url() / 등을 입력해도 좋다.
메뉴에 로그인 / 로그아웃 버튼 넣기
header.php에 추가하기
header.php에 추가
<? wp_loginout($_SERVER['REQUEST_URI']); ?>
로그인 로그아웃 버튼을 추가한다.
로그인이 안되어있는 상태, 로그인 버튼 표시
로그인이 되어있는 상태, 로그아웃 버튼 표시
로그인 / 로그아웃 후 현재 페이지를 그대로 표시한다.
functions.php에 추가하기
메뉴 위치가 primary인 메뉴에 로그인, 로그아웃 버튼 클릭하는 방법을 알아보자.
이 방법을 이용하면 header에서 로그인 / 로그아웃 버튼을 추가하지 않아도된다.
functions.php에 추가
function loginout_menu_link( $items, $args ) { if ($args->theme_location == 'primary') { if (is_user_logged_in()) { $items .= '<a href="'. wp_logout_url( get_permalink() ) .'">로그아웃</a>'; } else { $items .= '로그인'; } } return $items; } add_filter( 'wp_nav_menu_items', 'loginout_menu_link', 10, 2 );
사용된 코드 설명
function loginout_menu_link
:
loginout_menu_link 함수를 생성한다.
if (is_user_logged_in())
:
로그인 되어있는지 확인
$items .= ‘ … ‘;
:
$items 함수에 ‘(따옴표) 안의 내용을 넣는다.
wp_logout_url( get_permalink() )
:
로그아웃 후 현재 페이지를 보여준다. $_SERVER[‘REQUEST_URI’] / home_url() 등을 사용할 수 있다.
wp_login_url( get_permalink() )
:
로그인 후 현재 페이지를 보여준다. $_SERVER[‘REQUEST_URI’] / home_url() / admin_url() 등을 사용할 수 있다.
참고
Wordpress.org - reference - loginredirect
Wordpress.org - reference - wp_login_url
Wordpress.org - reference - wp_logout_url