/**
* Navigation menus and mega menu functionality.
*/
class Bunyad_Theme_Navigation
{
public function __construct()
{
add_action('bunyad_theme_init', array($this, 'init'));
}
public function init()
{
/**
* Mega menu support
*/
add_filter('bunyad_mega_menu_end_lvl', array($this, 'attach_mega_menu'));
}
/**
* Filter Callback: Add our custom mega-menus
*
* @param array $args
*/
public function attach_mega_menu($args)
{
extract($args);
// Have a mega menu?
if (empty($item->mega_menu)) {
return $sub_menu;
}
ob_start();
switch ($item->mega_menu) {
case 'category-a':
$template = 'category-a';
break;
// Legacy 'category'
case 'category':
$template = 'category-b';
break;
default:
$template = 'links';
break;
}
// Get our partial
Bunyad::core()->partial(
'partials/header/mega-menu/' . $template,
compact('item', 'sub_menu', 'sub_items', 'args')
);
// Return template output
return ob_get_clean();
}
}
// init and make available in Bunyad::get('navigation')
Bunyad::register('navigation', array(
'class' => 'Bunyad_Theme_Navigation',
'init' => true
));