Ultimate Member 플러그인에서 로그인 후 현재 페이지로 리디렉션시키기

Ultimate Member 플러그인에서 로그인 후 현재 페이지로 리디렉션시키기 3

Ultimate Member 플러그인에서 로그인 후 현재 페이지(로그인 페이지로 이동하기 전 페이지)로 리디렉션시키기

Ultimate Member는 워드프레스 프로필 및 멤버십 플러그인으로 현재 8만 개 이상의 사이트에 설치되어 사용되고 있습니다. 무료 멤버십 플러그인으로 WP-Members가 유명하지만 최근에는 Ultimate Member도 많이 사용되는 것 같습니다.

Ultimate Member는 무료 멤버십 플러그인이지만 (유료) 인스텐션을 통해 기능을 확장할 수 있습니다.

이 플러그인을 설치하고 활성화하면 다음과 같은 7개 페이지가 강제로 생성되고 삭제할 수 없게 됩니다.

  • Register (회원가입)
  • Login (로그인)
  • User (사용자)
  • Members (회원)
  • Account (계정)
  • Logout (로그아웃)
  • Password Reset (비밀번호 초기화)

워드프레스 관리자 페이지에서 Ultimate Member > User Roles에서 회원이 회원가입하거나 로그인할 때 이동할 URL을 지정할 수 있습니다.

Ultimate Member 플러그인에서 로그인 후 현재 페이지로 리디렉션시키기 4
특히 Login Options에서 Action to be taken after login으로 다음과 같은 옵션을 지정할 수 있습니다.

  • Redirect to profile (프로필 페이지로 이동)
  • Redirect to URL (특정 URL로 이동)
  • Refresh active page (활성 페이지 새로 고침)
  • Redirect to WordPress Admin (워드프레스 관리자 페이지로 이동)

이 중에서 Refresh active page를 선택하면 Account 페이지로 이동하게 됩니다. 아마 대부분의 사용자들이 이 옵션을 로그인 페이지로 진입하기 직전의 페이지로 이동하지 않을까 예상했을 것입니다.

만약 로그인 링크를 누르기 전에 있었던 페이지로 이동하려는 경우에는 다음과 같은 코드를 사용할 수 있습니다.

// Add Login and Logout menu items to menu whose menu name (theme_location) is 'primary'
// Redirects to current page after login/logout

add_filter( 'wp_nav_menu_items', 'wti_loginout_menu_link', 10, 2 );

function wti_loginout_menu_link( $items, $args ) {
if ($args->theme_location == 'primary') {
if (is_user_logged_in()) {
$items .= '<li class="right"><a href="'. wp_logout_url( get_permalink() ) .'">Logout</a></li>'; // 로그아웃
} else {
$items .= '<li class="right"><a href="'. wp_login_url(get_permalink()) .'">Login</a></li>'; // 로그인
}
}
return $items;
}

위의 코드에서 theme_location은 적절히 수정하도록 합니다.

이 코드를 적용하면 로그인/로그아웃 후 현재 페이지를 벗어나지 않게 됩니다. 테마에 따라 잘 작동하지 않을 수도 있습니다. 저는 아바다 테마에서 테스트해보니 잘 작동하네요.

참고:


15개 댓글

  1. 왜 Ultimate Member에 리다이렉트 기능이 없는지 좀 의아했지만, Ultimate Member - Korea 플러그인에 해당 기능을 넣었습니다.
    UserPro는 정말 비추입니다. 다 되는 것 같은 데, 실제로 써보면 무겁고 커스텀이 불가능합니다. TT.
    아웃스탠딩의 경우 시간과 비용을 감수하고, UserPro에서 Ultimate Member로 모두 마이그레이션했습니다.

  2. 여기 ultimate member 플러그인에서 색상 조정은 안될까요?? 버튼 색이나 전체적인 색이 화이트 앤 블루 인데 이거를 만들어진 홈페이지와 어울리게 색을 바꾸고 싶어서요 ㅠ 아무리 찾아도 없네요

  3. 챠일드 테마 functions.php에 위 코드를 삽인한 후, theme location을 바꿨는데, 잘 작동이 안되네요..
    theme location을 잘 못넣은 것 같은데, 제 테마에서 어떻게 확인할 수 있을까요?

      1. 아.. 저는 이런 수식이나 명령어를 잘 모르는 초보자입니다^^;

        https://www.thewordcracker.com/en-us/how-to-redirect-to-previous-page-after-login-with-the-ultimate-member-plugin-in-wordpress/

        여기 포스팅에 나온 것처럼 Please change the value of theme_location depending on your theme’s navigation. It may be generally ‘primary’, ‘main’ or similar. For Avada, you may use “menu-main-nav.”

        요 부분에서 아바다에는 menu-main-nav.로 밸류를 바꿨다고 하는데, 저의 테마에서는 어디서 위 내용을 찾아서 어떻게 넣어야 할지 잘 몰라서요..

      2. 현재 어떤 테마를 사용하고 계시나요?

        코드에서는 if ($args->theme_location == 'primary') 부분에서 primary 부분을 적당히 바꾸어 주어야 합니다.

      3. 유료 테마네요...
        제가 테마 파일을 확인해볼 수는 없습니다.

        우선 다음과 같은 메뉴 이름을 바꾸어가면서 테스트해보시겠어요?

        cb-main-menu
        main-menu
        main

        primary 부분을 대체해보시기 바랍니다. 확인이 어려운 경우 유료 테마는 지원을 받을 수 있습니다. 그냥 간단히 main navigation의 theme_location은 무엇이냐?고 물어보시면 답변을 받을 수 있을 것입니다.

      4. 참고로 메뉴가 하나뿐이라면 위의 코드에서

        if ($args->theme_location == 'primary') {

        이 라인을 삭제하고

        return $items; 라인 바로 있는 괄호 '}' 하나를 삭제하여 테스트해보시겠어요?

  4. 안녕하세요. ultimate member를 이제 갓 사용하려합니다. 로그인 시 현재페이지로 로그인하는 코드를 찾고 있는데. 위에 예로 든 코드는... 맞나요? 잘못 붙이신거 아닌지..? 위 코드는 primary 위치의 메뉴에서 로그인유저에게는 로그아웃을, 로그아웃 유저에게는 로그인을 표시하는 코드인것 같습니다.

    1. 메뉴에서 로그인을 클릭하여 로그인 정보를 입력하면 로그인 후 직전 페이지로 이동하게 됩니다.

      Ultimate Member 플러그인에서 Refresh active page 옵션을 선택하면 로그인 후에 직전 페이지로 이동해야 할 것 같지만, 버그 때문인지 Account 페이지로 이동합니다. (지금은 버그가 수정되었는지 모르겠습니다.)

      현재로서는 위에 제시된 코드를 사용하여 메뉴의 로그인 버튼을 클릭했을 때 직전 페이지(이전 페이지)로 이동시키는 것이 최선 같습니다.

  5. 안녕하세요.
    저번에 도와주신 덕분에 차질 없이 홈페이지 운영을 하고 있네요.
    다시 한번 감사합니다. 꾸벅

    오늘은 얼티메이트 멤버 관련해서 여쭤볼게 있습니다.
    홈페이지에서 보안적? 문제가 있다고 해서요. 엘티메이트 멤버 사용자 디렉터가 노출되고 있다고해서요. 이거 설정을 어찌해야 하나요? 이런식으로 방법을 찾았는데, 도저히 이해가 안되서 여쭤봅니다.

    1. 프로파일 또는 유저를 지워야 한다고 하고, 멤버스 페이지는 얼티메이트에서 지정해놓은 상태에서 숏코드를 삭제한 뒤, 보조적으로 얼티메이트에서 볼 수 있는 권한을 막으라고 합니다.

    : 개설된 페이지를 삭제하라는 이야기인지, 얼티메이트에서 설정된 무엇가를 삭제하라는 이야기인지...감도 안오네요 ㅠㅠ

    2. 프로필 페이지는 있어야 하니까 숏코드만 넣어놓고 얼티메이트에서 막으라고 합니다.

    : 숏코드만 넣고 삭제하라는 게...뭔 뜻인지ㅠㅠ

    3. SEO 플러그인 로봇TXT 파일로 해당 페이지(멤버스와 프로파일)을 막으라고 합니다.

    : ALL IN ONE SEO 플러그인을 사용하고 있는데 거기서 설정하라는 이야기 인가요?ㅠㅠ

    제가 아직 미흡해서 설명조차도 이해하기 힘들게 한거 같네요... ㅠㅠ 그래도 우선 답변 기다리고 있겠습니다. 좋은 하루 보내세요!!!!

    1. 안녕하세요?

      https://wordpress.org/support/topic/hiding-from-members-directory-still-not-fixed/ 글을 살펴보니 영어가 아닌 언어에서는 회원 디렉터리가 숨겨지지 않는 버그가 있다고 하네요.

      아래에 내용을 복사했습니다. 인용된 글 내의 링크를 참고하여 문제 해결을 시도하거나 플러그인 개발자에게 문의하여 문제를 해결해야 할 것 같습니다.

      For other languages than English, hiding from Members directory does (still) not work.
      Problem has been reported by Ov3rfly in July 2017, along with a possible solution:
      https://wordpress.org/support/topic/bug-hide-my-profile-from-directory-does-not-work-in-non-english-setups/
      Then a corresponding pull has been requested by malled in Github, also in July 2017:
      https://github.com/ultimatemember/ultimatemember/pull/303

      However, this pull was not taken into consideration so far 🙁
      The bug still exists and thus privacy is corrupted in non-english setups.

      개인적인 생각은 다른 멤버십 플러그인을 고려해보는 것도 괜찮을 것 같습니다.

      가령 UserPro 같은 플러그인이 있습니다.
      https://www.thewordcracker.com/basic/%EC%9B%8C%EB%93%9C%ED%94%84%EB%A0%88%EC%8A%A4-%EB%A1%9C%EA%B7%B8%EC%9D%B8-%ED%94%84%EB%A1%9C%ED%95%84-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8-userpro-%EC%A1%B0%EA%B1%B4%EB%B6%80-%ED%95%84%EB%93%9C/

      하지만 UserPro도 최근 버그가 발견되어 최신 버전으로 업데이트해야 한다고 하네요. 가급적 모든 플러그인과 테마를 최신 버전으로 유지하는 것이 보안상 좋습니다.

      1. 아 그렇군요!!
        큰 도움됐습니다. 감사합니다.
        매번 개발자님 통해서 배우고 갑니다.
        즐거운 연휴 보내세요!!!

댓글 남기기

* 이메일 주소는 공개되지 않습니다.