在导航菜单中添加“注销”链接


16

如何添加带有class="right"属性的主导航菜单链接?

我试图向其中添加静态链接,example.com/wp-logout.php?action=logout但这会导致注销确认页面。有什么办法可以使其成为注销链接?


1
您是否看到过类似这样的现有问题和答案?
fuxia

你看到了wp_loginout()吗?
kaiser 2014年

2
我已删除了接受的答案,因为该答案是从本网站窃而未注明出处。
fuxia

我最终使用了类似的东西。至少使用loginout()函数。我将发布下一次在电脑前的操作的确切信息。感谢@toscho
Zach Russell

您可以使用此免费插件wordpress.org/plugins/login-logout-register-menu轻松实现。
Vinod Dalvi

Answers:


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's

位置需要适合我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个空格来格式化代码(请参阅帮助)。
彼得·戴维

请不要广告您的网站。请确实编辑您的答案,并附上有关此代码块如何回答当前问题,在何处添加以及具体作用的解释。
Howdy_McGee
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.