Переключение между меню входа и выхода

Я включил меню для входа и регистрации пользователя на своем сайте 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>';
}

Спасибо


person fernanf    schedule 17.09.2018    source источник


Ответы (2)


Попробуйте этот код.

<?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>';
    }
?>
person Vel    schedule 18.09.2018

Функция 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"
}
?>

Функция выхода из системы выглядит следующим образом:

<a href="<?php echo esc_url( wp_logout_url() ); ?>">Logout</a>

Чтобы сделать все немного более правильным, выполните эту логику в файле functions.php, а затем замените код заголовка тегом шаблона, вызывающим пользовательскую функцию. Но было бы неплохо обработать все это в заголовке.

person Pike Milsner    schedule 18.09.2018
comment
не могли бы вы помочь мне, как обернуть этот код моим кодом, показанным выше? Спасибо - person fernanf; 18.09.2018