Skip to content

Instantly share code, notes, and snippets.

@rfmeier
Last active December 18, 2015 01:59
Show Gist options
  • Save rfmeier/5708096 to your computer and use it in GitHub Desktop.
Save rfmeier/5708096 to your computer and use it in GitHub Desktop.
Change menu is Genesis depending if the current user is logged in.
<?php
// add the members menu through Genesis menu support
add_theme_support( 'genesis-menus', array(
'members' => __( 'Members Only Navigation', 'news' ),
) );
// remove the default 'genesis_after_header' Genesis action callback
remove_action( 'genesis_after_header', 'genesis_do_nav' );
// add custom 'genesis_after_header' Genesis action callback
add_action( 'genesis_after_header', 'custom_genesis_do_nav' );
/**
* Callback for Genesis 'genesis_after_header' action.
*
* Display custom menu depending on status of current user.
*
* @package Genesis
* @category Menu
* @author Ryan Meier http://www.rfmeier.net/
*
* @return none
*/
function custom_genesis_do_nav(){
// default menu id. Run through a filter for later use if needed
$current_menu = apply_filters( 'custom_default_primary_menu_id', 'primary' );
// if user is logged in, set new menu id. Run through a filter for later use if needed
if( is_user_logged_in() )
$current_menu = apply_filters( 'custom_loggedin_menu_id', 'members' );
/** Do nothing if menu not supported */
if ( ! genesis_nav_menu_supported( $current_menu ) )
return;
/** If menu is assigned to theme location, output */
if ( has_nav_menu( $current_menu ) ) {
$args = array(
'theme_location' => $current_menu,
'container' => '',
'menu_class' => genesis_get_option( 'nav_superfish' ) ? 'menu genesis-nav-menu menu-primary superfish' : 'menu genesis-nav-menu menu-primary',
'echo' => 0,
);
$nav = wp_nav_menu( $args );
$pattern = genesis_markup( '<nav class="primary">%2$s%1$s%3$s</nav>', '<div id="nav">%2$s%1$s%3$s</div>', 0 );
$nav_output = sprintf( $pattern, $nav, genesis_structural_wrap( 'nav', 'open', 0 ), genesis_structural_wrap( 'nav', 'close', 0 ) );
echo apply_filters( 'genesis_do_nav', $nav_output, $nav, $args );
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment