Adicione o link “Logout” ao menu de navegação

14

Como posso adicionar um link ao menu de navegação principal com o atributo class="right" ?

Eu tentei adicionar um link estático a example.com/wp-logout.php?action=logout , mas isso leva a uma página de confirmação de logout. Existe alguma maneira de torná-lo um link de logout?

    
por Zach Russell 29.07.2014 / 20:54

4 respostas

34

Você pode conseguir isso usando o wp_nav_menu_items hook. Vamos dar uma olhada no seguinte trecho de código que mostra o link de login / logout na localização do menu 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;
}

Isso é o que implementamos no exemplo acima.

  1. Primeiro, adicionei um filtro para wp_nav_menu_items hook e anexamos um função para isso.
  2. Após verificar a localização do tema primary , verificamos se usuário está logado ou não.
  3. Se você fez login, mostramos o link Log Out , caso contrário, o Log In link.
  4. Passamos o permalink da página de visualização atual para o URL de login para que o usuário seja redirecionado para a página atual após login bem-sucedido.
  5. Utilizamos o class="right" para o código acima para atender às suas exigência.

Você pode encontrar uma explicação detalhada sobre este blog .

    
por Chittaranjan 30.07.2014 / 09:19
2

Tente adicionar um link personalizado com enlace Funcionou para mim!

    
por Marcelo Oliveira 13.11.2016 / 20:12
0

Meu menu de rodapé é um widget , portanto, tive dificuldades em usar o código de Chittaranjan. A seguinte versão editada funciona para mim. Também alterei os links e os tornei "dinâmicos": o login leva a uma página de sua escolha, o logout permanecerá na página atual ou será enviado para casa, se a página atual for sua página de login (privada). O ideal seria verificar se a sua página de login é realmente privada, mas não sei como fazer isso, desculpe.

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;
}
    
por Ralf 03.09.2018 / 15:17
-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;
}
    
por Ankush Samyal 30.08.2018 / 12:00

Tags