BeTheme (muffingroup)

Knowledgebase Docs » UberMenu 3
USEFUL? 23
UberMenu 3

BeTheme may not always use the required theme_location parameter when calling wp_nav_menu(), which prevents UberMenu from being able to control the menu automatically. Its newer nav#menu wrapper can also cause interference.

The BeTheme download package includes a child theme zip (betheme-child.zip) which you should install and activate before proceeding

Manual Integration

In order to ensure that UberMenu can control the menu on every page and eliminate interference from the theme, we’ll override the theme’s pluggable function to manually integrate the menu. Just paste one of the code blocks below in your child theme’s functions.php (muffingroup provides a child theme that you can install and activate)

Option 1: Basic Integration

if( function_exists( 'ubermenu' ) ){
	function mfn_wp_nav_menu(){
		ubermenu( 'main' , array( 'theme_location' => 'main-menu' ) );
	}
}

Option 2: Integration with theme menu switching

If you would like to maintain the theme’s per-page menu switching capability, you can use this instead of the above:

if( function_exists( 'ubermenu' ) ){


    function mfn_wp_nav_menu(){
			$args = array();


			if( mfn_ID() && is_single() && get_post_type() == 'post' && $custom_menu = mfn_opts_get( 'blog-single-menu' ) ){
				// theme options | single posts
				echo '<!-- custom menu | theme options - single post : '. $custom_menu .' -->';
				$args['menu'] = $custom_menu;
			} elseif( mfn_ID() && is_single() && get_post_type() == 'portfolio' && $custom_menu = mfn_opts_get( 'portfolio-single-menu' ) ){
				// theme options | single portfolio
				echo '<!-- custom menu | theme options - single portfolio : '. $custom_menu .' -->';
				$args['menu'] = $custom_menu;
			} elseif( $custom_menu = get_post_meta( mfn_ID(), 'mfn-post-menu', true ) ){
				// page options | page
				echo '<!-- custom menu | page options - page : '.$custom_menu.' -->';
				$args['menu'] = $custom_menu;
			} else {
				// default
				echo '<!-- default menu, theme location: main-menu -->';
				$args['theme_location'] = 'main-menu';
			}
			// echo '<!-- menu: '.$args['menu']. ' -->';
      ubermenu( 'main' , $args );
    }
}

Option 3: Split Header

Or, if you are using the theme’s Split Header layout, then use this code instead of the above:

if( function_exists( 'ubermenu' ) ){
	function mfn_wp_split_menu(){
		ubermenu( 'main' , array( 'theme_location' => 'main-menu' ) );
	}
}

Custom CSS

Add this custom CSS in your CSS Tweaks to hide the theme’s responsive toggle and make sure the header is layered on top of the slider

#Header_wrapper,
#Header #Top_bar{
    position: relative;
    z-index: 50;
    top:auto;
}
.responsive-menu-toggle{
	display:none !important;
}