146 lines
3.0 KiB
PHP
146 lines
3.0 KiB
PHP
|
|
<?php
|
||
|
|
|
||
|
|
if (! isset($location)) {
|
||
|
|
$location = 'menu_1';
|
||
|
|
}
|
||
|
|
|
||
|
|
if (empty($class)) {
|
||
|
|
$class = 'header-menu-1';
|
||
|
|
}
|
||
|
|
|
||
|
|
$responsive_output = 'data-responsive="no"';
|
||
|
|
|
||
|
|
$stretch_output = '';
|
||
|
|
|
||
|
|
if (blocksy_default_akg('stretch_menu', $atts, 'no') === 'yes') {
|
||
|
|
$stretch_output = 'data-stretch';
|
||
|
|
}
|
||
|
|
|
||
|
|
$attr['data-interaction'] = blocksy_default_akg(
|
||
|
|
'dropdown_interaction',
|
||
|
|
$atts,
|
||
|
|
'hover'
|
||
|
|
);
|
||
|
|
|
||
|
|
$menu_args = [
|
||
|
|
'container' => false,
|
||
|
|
'menu_class' => 'menu',
|
||
|
|
'fallback_cb' => 'blocksy_main_menu_fallback',
|
||
|
|
'blocksy_mega_menu' => true,
|
||
|
|
'blocksy_advanced_item' => true
|
||
|
|
];
|
||
|
|
|
||
|
|
if ($attr['data-interaction'] === 'click') {
|
||
|
|
$dropdown_click_interaction = blocksy_default_akg(
|
||
|
|
'dropdown_click_interaction',
|
||
|
|
$atts,
|
||
|
|
'item'
|
||
|
|
);
|
||
|
|
|
||
|
|
$attr['data-interaction'] .= ':' . $dropdown_click_interaction;
|
||
|
|
|
||
|
|
if ($dropdown_click_interaction === 'item') {
|
||
|
|
$menu_args['skip_ghost'] = true;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
$menu_type = blocksy_default_akg('header_menu_type', $atts, 'type-1');
|
||
|
|
|
||
|
|
if ($menu_type === 'type-2') {
|
||
|
|
$menu_type .= ':' . blocksy_default_akg('menu_indicator_effect', $atts, 'default');
|
||
|
|
}
|
||
|
|
|
||
|
|
$dropdown_animation = blocksy_default_akg('dropdown_animation', $atts, 'type-1');
|
||
|
|
$dropdown_items_type = blocksy_default_akg('dropdown_items_type', $atts, 'simple');
|
||
|
|
|
||
|
|
$dropdown_output = 'data-dropdown="' . $dropdown_animation . ':' . $dropdown_items_type . '"';
|
||
|
|
|
||
|
|
$menu = blocksy_default_akg('menu', $atts, 'blocksy_location');
|
||
|
|
|
||
|
|
$menu_object = null;
|
||
|
|
|
||
|
|
if ($menu === 'blocksy_location') {
|
||
|
|
$menu_args['theme_location'] = $location;
|
||
|
|
|
||
|
|
$theme_locations = get_nav_menu_locations();
|
||
|
|
|
||
|
|
$menu_object = wp_get_nav_menu_object('');
|
||
|
|
|
||
|
|
if (isset($theme_locations[$location])) {
|
||
|
|
$menu_object = get_term($theme_locations[$location], 'nav_menu');
|
||
|
|
}
|
||
|
|
} else {
|
||
|
|
$menu_args['menu'] = $menu;
|
||
|
|
|
||
|
|
$menu_object = wp_get_nav_menu_object($menu);
|
||
|
|
}
|
||
|
|
|
||
|
|
ob_start();
|
||
|
|
|
||
|
|
add_filter(
|
||
|
|
'nav_menu_item_title',
|
||
|
|
'blocksy_handle_nav_menu_item_title',
|
||
|
|
10, 4
|
||
|
|
);
|
||
|
|
|
||
|
|
add_filter(
|
||
|
|
'walker_nav_menu_start_el',
|
||
|
|
'blocksy_handle_nav_menu_start_el',
|
||
|
|
10, 4
|
||
|
|
);
|
||
|
|
|
||
|
|
wp_nav_menu($menu_args);
|
||
|
|
|
||
|
|
remove_filter(
|
||
|
|
'nav_menu_item_title',
|
||
|
|
'blocksy_handle_nav_menu_item_title',
|
||
|
|
10, 4
|
||
|
|
);
|
||
|
|
|
||
|
|
remove_filter(
|
||
|
|
'walker_nav_menu_start_el',
|
||
|
|
'blocksy_handle_nav_menu_start_el',
|
||
|
|
10, 4
|
||
|
|
);
|
||
|
|
|
||
|
|
$menu_content = ob_get_clean();
|
||
|
|
|
||
|
|
if (
|
||
|
|
strpos($menu_content, 'ubermenu') !== false
|
||
|
|
||
|
||
|
|
! apply_filters(
|
||
|
|
'blocksy:header:menu:has-responsive-desktop-menu',
|
||
|
|
blocksy_default_akg(
|
||
|
|
'collapse_non_fitting_menu_items',
|
||
|
|
$atts,
|
||
|
|
'yes'
|
||
|
|
) === 'yes'
|
||
|
|
)
|
||
|
|
) {
|
||
|
|
$responsive_output = '';
|
||
|
|
}
|
||
|
|
|
||
|
|
$aria_label = '';
|
||
|
|
|
||
|
|
if ($menu_object && isset($menu_object->name)) {
|
||
|
|
$aria_label = 'aria-label="' . esc_attr($menu_object->name) . '"';
|
||
|
|
}
|
||
|
|
|
||
|
|
?>
|
||
|
|
|
||
|
|
<nav
|
||
|
|
id="<?php echo esc_attr($class) ?>"
|
||
|
|
class="<?php echo esc_attr($class) ?> menu-container"
|
||
|
|
<?php echo blocksy_attr_to_html($attr) ?>
|
||
|
|
data-menu="<?php echo esc_attr($menu_type) ?>"
|
||
|
|
<?php echo $dropdown_output ?>
|
||
|
|
<?php echo $stretch_output ?>
|
||
|
|
<?php echo wp_kses_post($responsive_output) ?>
|
||
|
|
<?php echo blocksy_schema_org_definitions('navigation') ?>
|
||
|
|
<?php echo $aria_label ?>>
|
||
|
|
|
||
|
|
<?php echo $menu_content; ?>
|
||
|
|
</nav>
|
||
|
|
|
||
|
|
<?php
|