탐색 메뉴에 "로그 아웃"링크 추가


16

class="right"속성 을 사용하여 기본 탐색 메뉴에 링크를 추가하려면 어떻게 해야합니까?

정적 링크를 추가하려고 시도했지만 example.com/wp-logout.php?action=logout로그 아웃 확인 페이지가 나타납니다. 로그 아웃 링크를 만드는 방법이 있습니까?


1
당신은 같은 질문에 대한 답변 기존 본 적 이 하나 ?
fuxia


2
허용 된 답변 속성없이이 사이트 에서 표절되었으므로 허용 된 답변을 삭제했습니다 .
fuxia

나는 비슷한 것을 사용했다. 적어도 loginout () 함수를 사용하십시오. 다음에 컴퓨터 앞에 올 때했던 내용을 정확하게 게시하겠습니다. 감사합니다 @toscho
Zach Russell

이 무료 플러그인 wordpress.org/plugins/login-logout-register-menu 를 사용하면 쉽게 얻을 수 있습니다.
Vinod Dalvi

답변:


39

wp_nav_menu_items후크를 사용하여이를 달성 할 수 있습니다 . primary메뉴 위치 에 로그인 / 로그 아웃 링크를 보여주는 다음 코드를 살펴 보겠습니다 .

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() .'">'. __("Log Out") .'</a></li>';
      } else {
         $items .= '<li class="right"><a href="'. wp_login_url(get_permalink()) .'">'. __("Log In") .'</a></li>';
      }
   }
   return $items;
}

이것이 위의 예에서 구현 한 것입니다.

  1. 먼저 wp_nav_menu_items후크 필터를 추가하고 기능을 첨부했습니다.
  2. primary테마 위치를 확인한 후 사용자의 로그인 여부를 확인했습니다.
  3. 로그인하면 Log Out링크가 표시되고 그렇지 않으면 Log In 링크가 표시됩니다.
  4. 현재보고있는 페이지의 퍼머 링크를 로그인 URL로 전달하여 사용자가 로그인에 성공한 후 현재 페이지로 리디렉션됩니다.
  5. 우리는을 사용하고 class="right"귀하의 요구 사항을 충족하기 위해 위의 코드에.

블로그 에서 자세한 설명을 찾을 수 있습니다 .


@ timo-s 스물 일곱 열일곱 (자식) 테마에서 이것은 top메뉴 위치 에서만 작동 합니다 : if ($args->theme_location == 'top').
Iurie Malai

위치는 나를 위해 필요했다primary-menu
Toskan


0

바닥 글 메뉴는 위젯 이므로 Chittaranjan의 코드를 사용하는 데 어려움이있었습니다. 다음 편집 된 버전이 저에게 효과적입니다. 또한 링크를 변경하여 링크를 "동적"으로 만들었습니다. 로그인은 선택한 페이지로 연결되고, 현재 페이지가 (비공개) 로그인 페이지 인 경우 로그 아웃이 현재 페이지에 유지되거나 홈으로 전송됩니다. 이상적으로는 귀하의 로그인 페이지가 실제로 비공개인지 확인하지만 그 방법을 모르겠습니다. 죄송합니다.

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

function wti_loginout_menu_link( $items, $args ) {
    //var_dump($args);
    if (($args->menu->slug == 'footer')) {
        if (is_user_logged_in()) {
            $loginlink = '/your-private-page';
            $logoutlink = get_permalink();
            if (strpos($logoutlink, $loginlink) !== false) {
                $logoutlink = '/';
            }
            $items .= '<li class="right"><a href="'. wp_logout_url($logoutlink) .'">'. __("Log Out") .'</a></li>';
        } else {
            $items .= '<li class="right"><a href="'. wp_login_url($loginlink) .'">'. __("Log In") .'</a></li>';
        }
    }
    return $items;
}

-2
add_filter( 'wp_nav_menu_items', 'add_loginout_link', 15, 5 );

function add_loginout_link( $menus, $args ) {

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

   $menus .= '<li><a href="'. wp_logout_url( get_permalink( woocommerce_get_page_id( 'myaccount' ) ) ) .'">Log Out</a></li>';
    }

  elseif (!is_user_logged_in() && $args->theme_location == 'primary') {

   $menus .= '<li><a href="' . get_permalink( woocommerce_get_page_id( 'myaccount' ) ) . '">Log In</a></li>';
  }

  return $menus;
}

각 줄의 시작 부분에 4 개의 공백을 사용하여 코드를 포맷해야합니다 (도움말 참조).
Peter HvD

귀하의 웹 사이트를 광고하지 마십시오. 이 코드 블록이 현재 질문에 답변하는 방법, 추가 위치 및 구체적 내용에 대한 설명으로 답변을 편집하십시오.
Howdy_McGee
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.