在菜单中使用 UserPro 登录和注销 WordPress

WordPress login & logout with UserPro in menu

我正在使用一个名为 "UserPro" 的插件。我也在我的菜单中使用一个功能来显示 "Login" 或者如果登录 "Logout".

function autov_add_loginout_navitem($items) {
    $login_item = '<li class="login">'.wp_loginout($_SERVER['REQUEST_URI'], false).'</li>';
    $items .= $login_item;
    return $items;
}
add_filter('wp_nav_menu_account_items', 'autov_add_loginout_navitem');

插件有一个短代码

<?php echo do_shortcode('[userpro template=login]'); ?>

如何在第一个代码中实现它?

(这是我的儿童主题中的 functions.php)

该短代码需要在页面中。创建一个页面并添加短代码。从那里您可以 link 到登录页面。注销 link 将保持不变。

function autov_add_loginout_navitem($items) {
    $format = '<a href="%s">%s</a>';
    $link = is_user_logged_in()
        ? sprintf($format, wp_logout_url(), 'Logout')
        : sprintf($format, home_url('login'), 'Login');
    $login_item = '<li class="login">'.$link.'</li>';
    $items .= $login_item;
    return $items;
}
add_filter('wp_nav_menu_account_items', 'autov_add_loginout_navitem');

以上示例假设您已经创建了一个带有 slug login 的页面并在其中添加了简码。请注意,wp_logout_url 函数可以将重定向 link 作为参数,如果您想在注销后将用户发送到某个地方,则应指定该参数。

我搜索了很长时间的解决方案,但我无法让上面的代码为我工作,所以我会与任何需要快速修复的人分享我的解决方案,如果你不能得到工作代码:

为 'login' 和 'logout' 创建一个页面,并向两个页面添加简码 [userpro template=login]。

安装 Wordpress 插件“nav menu roles”。激活后,转到外观 > 菜单。将页面 'login' 和 'logout' 添加到菜单。

在 'login' 菜单项上,将 "display mode" 设置为 "logged out users"。 将 'logout' 菜单项 "display mode" 设置为 "logged in users"。

当您的访问者在导航中单击登录时,他们将被定向到一个页面以输入用户名和密码。当他们点击注销时,他们将自动注销并返回到您的主页。