본문 바로가기
개발일기/워드프레스

[워드프레스] 회원가입/로그인 ultimate member 플러그인 로그인 후 페이지 설정 하기 + 훅(hook) 이용 방법 추가

by 프로그래머콩 2019. 2. 1.
워드프레스(wordpress)
회원가입/로그인 ultimate member 플러그인 
로그인 후 페이지 설정 방법



로그인/회원가입 플러그인인 Ultimate member 플러그인을 이미 설치 하셨다는 가정하에 설명들어가겠습니다.
방법은 간단합니다. 
먼저 관리자 페이지(보통은 "http://(url)/wp-admin")에 접속해주세요~





그 다음 
좌측 메뉴의 "(1)Ultimate member > Forms" 탭을 클릭해서 접속 하시면 아래와 같은 화면이 로드 됩니다.
아래에서 "(2)Default Login"(혹은 본인이 만들어 지정한 Login 폼)을 클릭하면 편집페이지로 들어가게 되는데요,
저희는 편집페이지로 들어가서 로그인 후 url을 설정하려 합니다.
화면의 "(2)Default Login" 클릭해주세요~




 "Default Loing" 편집 페이지에 접속, 스크롤을 쭉 내리시다 보면
우측에 "Redirection after Loin"이라는 옵션이 보입니다. 거기서 "Redirect to URL" 선택해주세요. 
그럼 바로 아래에 "Set Custom Redirect URL" 칸이 생성되는데 여기에 "로그인 후 이동할  URL(redirect url)" 을 
입력해주시면 됩니다.



간혹 커스텀(custom) 테마 혹은 플러그인 제작 하시는 분들 중 ultimate member 플러그인을 사용하면서 동시에
인자값(특히 get)을 가진 redirect url을 반환하고 싶어 하시는 분들이나 로그인 후 이전페이지로 이동하려는 needs가 
 있으실 수 있습니다(는.. 나) 그런데 ultimate member 플러그인이 생각보다 강력(?)해서 이걸 한번 사용하니까
wordpress 에서 제공하는 대표적인 리다이렉트(redirect) 함수들이 안 먹히더라구요(ex : login_redirect, wp_login 등등...)

그리하여 열심히 찾아 해맨끝에 발견했던게 
"um_after_login_fields" 
액션 훅 (action hook) 입니다
ultimate member가 로그인 필드를 호출하는 훅인데요 이게 무슨 효과가 있을까요?

로그인 후 그다음 페이지는
<input type="hidden" id="redirect_to" name="url".../> 
이라는 태그에 의해서 다음 페이지가 결정이 되는데요,
필드를 만들때 이
 redirect_to 아이디를 가진 태그의 값을 유동적으로 변경 시킴으로써 다음 경로 뿐만아니라
'get' 값 까지 임의로 받아올 수 있게끔 조작 하면 된다는 것이죠.
소스는 다음과 같습니다.

** * custom * * ultimate-member plugins * * - login redirect */ add_action('um_after_login_fields', 'redirect_on_login', 1000); function redirect_on_login($args) { global $ultimatemember; // DO NOT add when reviewing user's details if ( $ultimatemember->user->preview == true && is_admin() ) return; $primary_btn_word = $args['primary_btn_word']; $primary_btn_word = apply_filters('um_login_form_button_one', $primary_btn_word, $args ); $secondary_btn_word = $args['secondary_btn_word']; $secondary_btn_word = apply_filters('um_login_form_button_two', $secondary_btn_word, $args ); $secondary_btn_url = ( isset( $args['secondary_btn_url'] ) && $args['secondary_btn_url'] ) ? $args['secondary_btn_url'] : um_get_core_page('register'); $secondary_btn_url = apply_filters('um_login_form_button_two_url', $secondary_btn_url, $args ); //get_site_url = wordpress 사이트 url $homepage = get_site_url(); //$_SERVER['HTTP_REFERER'] = 이전 페이지 url $referrer = ( isset( $_SERVER['HTTP_REFERER'] ) && ! empty( $_SERVER['HTTP_REFERER'] ) ) ? $_SERVER['HTTP_REFERER'] : $homepage; ?> <script> (function( $ ) { $(document).ready(function(){ $("#redirect_to").val('<?=$referrer?>'); }); } )( jQuery ); </script> <?php } /**

(javascript가 포함된다는 점에서 좋은 소스는 아니지만 ultimate를 이용해 꼭 get인자를 받아오고 싶은 분들만 사용하시길...)