Inloggen voor bepaalde menuitems
-
Ik heb een probleempje met mn menu. Alleen als een gebruiker ingelogd is mag hij pagina “Ledenlijst” in het forum zien. Het id van de pagina waar het over gaat is imho 47, aangezien als ik ga bewerken is het url “http://www.xxxxxx.nl/wp-admin/post.php?post=47&action=edit”
Mijn menu komt hier vandaan:
<?php ob_start();?><?php echo theme_get_menu(array( 'source' => theme_get_option('theme_vmenu_source'), 'depth' => theme_get_option('theme_vmenu_depth'), 'class' => 'art-vmenu' ) ); ?> <?php theme_wrapper('vmenu', array('title' => __('Vertical Menu', THEME_NS), 'content' => ob_get_clean())); ?> .....
daar maak ik van:
<?php ob_start();?> <?php echo theme_get_menu(array( 'source' => if ( is_user_logged_in() ) { wp_list_pages(); } else { wp_list_pages(exclude = 3,7,31 ); } ' 'depth' => theme_get_option('theme_vmenu_depth'), 'class' => 'art-vmenu' ) );
en in test.php:
<?php if ( is_user_logged_in() ) { wp_list_pages(); } else { wp_list_pages('exclude=47' ); } ?>
Het menu komt wel, maar ook als de gebruiker niet is ingelogd wordt de pagina “Ledenlijst” gedisplayed. Wat doe ik verkeerd?
-
Iemand?
Ik zou zeggen: gooi je huidige menusysteem overboord en gebruik
wp_nav_menu
in plaats vanwp_list_pages
: http://codex.wordpress.org/Function_Reference/wp_nav_menuHoe kan ik dan een bepaalde pagina excluden?
Twee verschillende menu’s aanmaken en dan de voorwaarden bepalen met
is_user_logged_in()
, vergelijkbaar met de constructie die je in test.php hebt staan.Dus:
<?php if ( is_user_logged_in() ) { wp_nav_menu( array( 'container_class' => 'menu', 'theme_location' => 'primary' ) ); } else { wp_nav_menu( array( 'container_class' => 'menu', 'theme_location' => 'secondary' ) ); } ?>
Iets in die trand?
Min of meer 🙂 theme_location mag je weglaten, belangrijk is de $menu parameter (id, slug, of naam van de menu’s). Vergeet ook niet de menu’s te registreren: http://codex.wordpress.org/Function_Reference/register_nav_menus
- Het onderwerp ‘Inloggen voor bepaalde menuitems’ is gesloten voor nieuwe reacties.