2013-08-28 4 views
0

로그인을 메뉴에 추가하는 스크립트가 있습니다. 그러나 로그인 한 후에는 올바르게 리디렉션되지 않습니다. 로그인 페이지 이전에 로그인 한 후 리디렉션하고 싶습니다.WordPress 리디렉션 로그인/로그 아웃

function sv_get_logout_redirect_url() { 
    $badurls = array('submit-form', 'dashboard', 'profile', 'guidelines'); 
    $current_url = get_permalink(); 
    $isgood = true; 
    foreach ($badurls as $bad) { 
     $pos = strpos($current_url,$bad); 
     if (! $pos === false) { 
      $isgood = false; 
      break; // no need to check any more "bads" 
     } 
    } 
    if ($isgood) { 
     return wp_logout_url(get_permalink()); 
    } else { 
     return wp_logout_url(home_url()); 
    } 
} 

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

function sv_add_usermenu($items, $args) { 
    global $current_user; 

    if (is_user_logged_in() && $args->theme_location == 'primary-menu') { 
     // menu items for logged in user 
     $guidelines_url = site_url() . '/guidelines/'; 
     $dashboard_url = site_url() . '/dashboard/' . $current_user->user_nicename; 
     $profile_url = site_url() . '/profile/' . $current_user->user_nicename; 

     // http://fortawesome.github.com/Font-Awesome/ 
     // some fontawesome names icon-arrow-down, icon-chevron-down, icon-caret-down 
     $items .= "<li class='menu-item'><a href='#'>$current_user->display_name <span class='icon-caret-down'> </span> </a>"; 
     //$items .= "<li class='menu-item'><a href='#'>$current_user->display_name</a>"; 
     $items .= "<ul>"; 
     $items .= "<li class='sub-menu'><a href='$guidelines_url'>Usage Guidelines</a></li>"; 
     $items .= "<li class='sub-menu'><a href='$dashboard_url'>My Dashboard</a></li>"; 
     $items .= "<li class='sub-menu'><a href='$profile_url'>My Profile</a></li>"; 
     $items .= "<li class='sub-menu'><a href='" . sv_get_logout_redirect_url() . "'>Uitloggen</a></li>"; 
     $items .= "</ul>"; 
     $items .= "</li>"; 
    } elseif (!is_user_logged_in() && $args->theme_location == 'primary-menu') { 
     //menu items for NOT logged in user 
     //$login_url = site_url('/a-page-name/');  // get login url and redirect to a specific page 
     //$login_url = wp_login_url(home_url());  // get login url and redirect to home page 
     $login_url = wp_login_url(get_permalink()); // get login url and redirect to current page 
     //the contents of <a href"" must be a url 
     $items .= "<li class='sub-menu'> <a href='$login_url' class='simplemodal-login'>Log In</a></li>"; 
    } 
    return $items; 
} 

누군가가 나를 도울 수 있기를 바랍니다. 감사.

답변

0

누군가를 홈페이지에서 확인한 다음 메뉴에서 "로그인"을 클릭하면 로그인 페이지가 나타납니다. 사용자가 다시 로그 아웃하기로 결정한 경우 홈 페이지로 돌아 가야합니다 (로그인 페이지로 이동하기 전에 있었던 페이지이기 때문에).

이 경우에는 PHP에서 $_SERVER$_SESSION 개의 변수를 조사해야합니다. 좀 더 정확하게하려면 사용자 에이전트를 현재 페이지로 참조한 페이지의 주소 (있는 경우)를 보유하는 변수 $_SEVER['HTTP_REFERER']을 살펴보십시오.

공식 문서는 여기에 있습니다 : http://php.net/manual/en/reserved.variables.server.php

당신이 사용자의 로그 아웃 할 경우에 호출 할 수 있습니다 세션 내에서 그것을 저장하는 당신이해야 더 긴 시간이 URL을 필요로하기 때문에.

그러나이 솔루션에 작은 단점이 있습니다. WordPress 사이트의 관리자가 로그인을 시도하기 전에 사용자가 있었던 페이지의 영구 링크를 변경하면 어떻게됩니까? 그런 다음 $_SEVER['HTTP_REFERER']에서 저장 한 URL이 잘못되어 404 페이지가 표시됩니다. 그러나이 사건의 가능성은 매우 작기 때문에이 솔루션이 문제를 해결하는 데 도움이되기를 바랍니다.