我在我的Wordpress网站中包括了一个用于登录和用户注册的菜单,这些菜单显示在Wordpress仪表板(外观>菜单)中选择它的标题中。为此,我编写了以下代码。
它将包括什么代码,以便在用户登录或注册时,注册菜单切换到允许关闭用户会话(退出页面)的链接,反之亦然?
function.php(子主题):
<?php
register_nav_menus( array(
'login' => esc_html__( 'Login', 'music' ),
) );
?>
header.php:
if ( has_nav_menu( 'login' ) ) {
echo '<div class="login-nav">';
$login_menu_args = array(
'theme_location' => 'login',
'container' => 'ul',
'menu_class' => 'nolmp',
'echo' => true,
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
);
wp_nav_menu( $login_menu_args );
echo '</div>';
}
谢谢
答案 0 :(得分:0)
如果当前用户已登录,函数 is_user_logged_in() 将返回TRUE,否则返回FALSE,这将使其直接进行检查。
最简单的解决方案是将链接显示代码包装在IF / ELSE语句中。类似于以下内容:
检查他们是否已登录:
<?php if(is_user_logged_in()) {
// do the stuff to display "Log Out"
}
else {
// the user isn't logged in so display "Log In"
}
?>
Log Out function看起来像这样:
<a href="<?php echo esc_url( wp_logout_url() ); ?>">Logout</a>
为了使事情更正确,请在functions.php中执行此逻辑,然后将标头代码替换为调用自定义函数的模板标记。但是,它将可以处理标头中的所有内容。
答案 1 :(得分:0)
尝试此代码。
<?php
if(is_user_logged_in()) {
echo $items = '<li class="right"><a href="'. wp_login_url(get_permalink()) .'">'. __("Log Out") .'</a></li>';
}
else {
echo '<div class="login-nav">';
$login_menu_args = array(
'theme_location' => 'login',
'container' => 'ul',
'menu_class' => 'nolmp',
'echo' => true,
'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
);
wp_nav_menu( $login_menu_args );
echo '</div>';
}
?>