Как я могу различные параметры в меню заголовка для входа и выхода пользователей на WP? - PullRequest
0 голосов
/ 25 октября 2019

Я использую тему OceanWP с WordPress для создания своего веб-сайта.

Шаблон, который я использую, имеет две строки меню главной страницы, строку главного меню и верхнюю строку меню, выглядит так: http://prntscr.com/po0bi2

Я хочу показывать только опции «Моя учетная запись» и «Панель мониторинга поставщика» в верхней строке меню для зарегистрированных пользователей, а также кнопку «Выйти». В настоящее время они отображаются для пользователей, вошедших в систему или вышедших из системы.

Я нашел в сети некоторый код, который я немного изменил и добавил в файл functions.php, который должен дать возможность создать два меню, одно для входа в систему. пользователи и один для зарегистрированных пользователей. Вот код:


/* Menu location */
function prefix_menu_location() {

    // Register navigation menus
    register_nav_menus( array(
        'logged_in'     => 'Logged In',
        'logged_out'    => 'Logged Out',
    ) );

}
add_action( 'after_setup_theme', 'prefix_menu_location', 10 );

/* Menu for logged in and out users */
function prefix_top_menu_location() {

    $return = 'top_menu';

    if( is_user_logged_in() ) { 
        $return = 'logged_in';
    } else {
        $return = 'logged_out';
    }

    return $return;

}
add_filter( 'ocean_top_menu_location', 'prefix_top_menu_location' );

После добавления он создал «залогинен» и «вышел» на моей странице меню. см .: http://prntscr.com/po0fok

Также он дал мне возможность выбрать параметры здесь на странице меню редактирования: http://prntscr.com/po0geh

Я создал два меню, которые я назвал "Меню верхней панели 1"и" Top Bar menu 2 ", второй - это тот, который я хотел использовать для пользователей, вышедших из системы. Проблема в том, что он позволит мне назначить только одно меню верхней панели. Пожалуйста, смотрите здесь: http://prntscr.com/po0j5t

Когда я устанавливаю «Top Bar Menu 1» в «Top Bar» для пользователей, которые вошли в систему, то я пытаюсь редактировать «Top Bar 2 Menu» для пользователей, которыеВыйдя из системы, он не позволит мне также выбрать верхнюю панель, так как она говорит, что для верхней панели в настоящий момент установлено «Меню верхней панели 1», поэтому, когда пользователь вошел в систему, он увидит «Меню верхней панели 1», но когда он вошел в систему. из верхней панели будет пусто, так как это не позволит мне назначить «Top Bar Menu 2» для верхней панели. http://prntscr.com/po0ll2

Кто-нибудь знает, как я могу назначить второе меню для пользователей, вышедших из системы, также верхней панели или мне нужно изменить код, добавленный в файл functions.php?

Большое спасибо,

1 Ответ

0 голосов
/ 25 октября 2019

Вы можете сделать что-то подобное в вашем файле header.php (или там, где когда-либо отображаются ваши навигационные меню)

<?php if ( is_user_logged_in() ) : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'logged_in', 'menu_class' => 'nav-menu' ) ); ?>
<?php else : ?>
<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu' => 'logged_out', 'menu_class' => 'nav-menu' ) ); ?>
<?php endif; ?>

или если вы все еще хотите сделать это в файле функций, вы можете использовать это.

function my_wp_nav_menu_args( $args = '' ) {

if( is_user_logged_in() ) { 
    $args['menu'] = 'logged_in';
} else { 
    $args['menu'] = 'logged_out';
} 
    return $args;
}
add_filter( 'wp_nav_menu_args', 'my_wp_nav_menu_args' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...