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

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

评论

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

您看过wp_loginout()吗?

我已删除了接受的答案,因为该答案是在本网站上被without窃而未注明出处。

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

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

#1 楼

您可以使用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;
}


这是我们在上面的示例中实现的。


首先添加了一个用于wp_nav_menu_items挂钩的过滤器,并为其添加了
功能。
在检查了primary主题位置之后,我们检查了是否
用户是否已登录。
如果已登录,则显示了Log Out链接,否则显示了Log In
链接。
我们已将当前查看页面的永久链接传递给了
登录URL,以便成功登录后用户将被重定向到当前页面。
我们已使用上述代码中的class="right"来满足您的
要求。

您可以在此博客上找到详细的说明。

评论


@ timo-s在“二十十七岁(儿童)”主题中,这仅适用于顶部菜单位置:if($ args-> theme_location =='top')。

–马里(Iurie Malai)
17年9月2日在20:59

位置需要适合我的主要菜单

– Toskan
17年3月3日在4:08

#2 楼

尝试使用http://example.com/wp-login.php?action=logout
添加自定义链接
对我有用!

评论


这向用户显示“您确定要注销吗?”提示,因为随机数丢失。

–random_user_name
17年7月10日在18:28

#3 楼

如果您灵活地添加插件来获得此功能,则可以使用:https://wordpress.org/plugins/login-logout-register-menu/
它只是在菜单中添加了一个非常方便的部分建造者。您可以将其与另一个插件结合使用,以限制向登录用户显示哪些菜单项,向注销用户显示哪些菜单项以及向所有人显示哪些菜单项。


#4 楼

我的页脚菜单是一个小部件,因此我很难使用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;
}