Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 31 additions & 46 deletions lib/nav.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,41 +13,22 @@ class_exists('UberMenu')
add_action( 'genesis_before', 'genesis_do_nav' );
add_action( 'genesis_before', 'genesis_do_subnav' );

// filter menu args for bootstrap walker and other settings
add_filter( 'wp_nav_menu_args', 'bsg_nav_menu_args_filter' );

// add bootstrap markup around the nav
add_filter( 'wp_nav_menu', 'bsg_nav_menu_markup_filter', 10, 2 );

function bsg_nav_menu_args_filter( $args ) {

if (
'primary' === $args['theme_location'] ||
'secondary' === $args['theme_location']
) {
$args['depth'] = 2;
$args['menu_class'] = 'nav navbar-nav';
$args['fallback_cb'] = 'wp_bootstrap_navwalker::fallback';
$args['walker'] = new wp_bootstrap_navwalker();
}

return $args;
}

function bsg_nav_menu_markup_filter( $html, $args ) {
// only add additional Bootstrap markup to
// primary and secondary nav locations
if (
'primary' !== $args->theme_location &&
'secondary' !== $args->theme_location
) {
return $html;
}

$data_target = "nav-collapse" . sanitize_html_class( '-' . $args->theme_location );
$output = <<<EOT
<div class="container-fluid">
<!-- Brand and toggle get grouped for better mobile display -->
add_filter( 'genesis_do_nav', 'bsg_nav_menu', 10, 3 );
add_filter( 'genesis_do_subnav', 'bsg_nav_menu', 10, 3 );
function bsg_nav_menu_args_filter($nav_output, $nav, $args){

$args['depth'] = 3;
$args['menu_class'] = 'nav navbar-nav';
$args['fallback_cb'] = 'wp_bootstrap_navwalker::fallback';
$args['walker'] = new wp_bootstrap_navwalker();

$nav = wp_nav_menu( $args );
$sanitized_location = sanitize_key( $args['theme_location'] );

$data_target = 'nav-collapse-' . $sanitized_location;
$nav_markup = <<<EOT
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#{$data_target}">
<span class="sr-only">Toggle navigation</span>
Expand All @@ -56,21 +37,25 @@ function bsg_nav_menu_markup_filter( $html, $args ) {
<span class="icon-bar"></span>
</button>
EOT;
// only include blog name and description in the nav
// if it is the primary nav location
if ( 'primary' === $args->theme_location ) {
$output .= apply_filters( 'bsg_navbar_brand', bsg_navbar_brand_markup() );
}

$output .= '</div>'; // .navbar-header
// only include blog name and description in the nav
// if it is the primary nav location
if ( 'primary' === $sanitized_location ) {
$nav_markup .= apply_filters( 'bsg_navbar_brand', bsg_navbar_brand_markup() );
}

$nav_markup .= '</div>'; // .navbar-header
$nav_markup .= '<div class="collapse navbar-collapse" id="'.$data_target.'">';
$nav_markup .= $nav;
$nav_markup .= '</div>'; // .collapse .navbar-collapse

$nav_markup_open = sprintf( '<nav %s>', genesis_attr( 'nav-' . $sanitized_location ) ) . '<div class="container-fluid">';
$nav_markup_close = '</div></nav>';
$nav_output = $nav_markup_open . $nav_markup . $nav_markup_close;

return $nav_output;
}

$output .= "<div class=\"collapse navbar-collapse\" id=\"{$data_target}\">";
$output .= $html;
$output .= '</div>'; // .collapse .navbar-collapse

$output .= '</div>'; // .container-fluid
return $output;
}

function bsg_navbar_brand_markup() {
$output = '<a class="navbar-brand" id="logo" title="' .
Expand Down