여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. 워드프레스 로그인 / 로그아웃 후 페이지 이동 (리다이렉트)
워드프레스 로그인 / 로그아웃 후 페이지 이동 (리다이렉트)
2년전 작성
2년전 수정

워드프레스에서 로그인 / 로그아웃 후 페이지 이동하는 방법에 대해 알아보자.

로그인

어디서든 로그인할 때 리다이렉트

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() 등을 사용할 수 있다.

참고

Mingg`s Diary
밍구
밍구
공부 목적 블로그