Я хотел бы добавить кнопку в мое дополнительное меню, которое указывает на страницу «Моя учетная запись», и текст на кнопке должен отображать «Моя учетная запись», если пользователь вошел в систему.
Если пользователь вышел из системы, он увидел бы кнопку с надписью «зарегистрироваться» и указанием на страницу входа.
Кто-нибудь знает, возможно ли это?
Я думаю, что я близко, но я не уверен, возможно ли это:
Это в functions.php моей дочерней темы:
function storefront_secondary_navigation() {
if ( has_nav_menu( 'secondary' ) ) {
?>
<nav class="secondary-navigation" role="navigation" aria-label="<?php esc_html_e( 'Secondary Navigation', 'storefront' ); ?>">
<p>wat is deze</p>
<?phpif( ! is_user_logged_in()) {
wp_nav_menu(
array(
'theme_location' => 'secondary',
'fallback_cb' => '',
)
);
}
else{
wp_nav_menu(
array(
'theme_location' => 'secondary',
'fallback_cb' => '',
)
);
}
echo "menu locations";
$hoi = get_nav_menu_locations();
var_dump($hoi);
//outputs an array with 3 objects: 'primary', 'secondary', and 'handheld'.
?>
</nav><!-- #site-navigation -->
<?php
}
}
В WordPress <body>
элемент имеет класс logged-in
если пользователь вошел в систему. Таким образом, вы можете использовать это, чтобы скрыть правую кнопку:
Добавьте это к вашему style.css
:
#menu-item-8071 {
display: none;
}
body.logged-in #menu-item-8071 {
display: block;
}
body.logged-in #menu-item-8011 {
display: none;
}
Вместо того, чтобы использовать идентификаторы пунктов меню в качестве селектора CSS, вы можете добавить свои собственные классы CSS к своим кнопкам. Сначала вы должны включить «CSS-классы» в настройках экрана (вверху страницы редактора меню). Теперь вы можете ввести дополнительные классы CSS для каждого пункта меню.
например.:
show-if-logged-in
для первой кнопкиhide-if-logged-in
для второй кнопкиТаким образом, вы можете использовать этот код CSS:
.show-if-logged-in {
display: none;
}
body.logged-in show-if-logged-in {
display: block;
}
body.logged-in .hide-if-logged-in {
display: none;
}
Мне удалось это исправить, и это работает. Я сделал 2 отдельных пункта во вторичном меню через редактор меню WordPress. Затем я создал хук действия, где он проверяет, вошел ли пользователь в систему или нет, а затем скрывает кнопку (с соответствующей ссылкой, которая была настроена в редакторе меню) соответственно.
Недостатком этого является то, что его нелегко обслуживать, так как от разработчика требуется получить элемент по идентификатору, поэтому, если кто-то изменит настройки меню, он, вероятно, получит другой идентификатор и, таким образом, будет каждый раз фиксироваться вручную.
function modify_secondary_menu_buttons() {
if( ! is_user_logged_in()) {
echo '<script type="text/javascript">
jQuery("#menu-item-8071").css("display", "none");
</script>';
return;
}
else{
echo '<script type="text/javascript">
// Document ready
jQuery(document).ready(function(){
console.log("You are logged in");
jQuery("#menu-item-8011").css("display", "none");
});
</script>';
}
}
add_action( 'wp_footer', 'modify_secondary_menu_buttons' );