';
/**
* Fires before the Primary Header Menu navigation.
* Disable Primary Menu is checked
* Last Item in Menu is not 'none'.
* Take Last Item in Menu outside is unchecked.
*
* @since 1.4.0
*/
do_action( 'astra_main_header_custom_menu_item_before' );
echo astra_masthead_get_menu_items(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
/**
* Fires after the Primary Header Menu navigation.
* Disable Primary Menu is checked
* Last Item in Menu is not 'none'.
* Take Last Item in Menu outside is unchecked.
*
* @since 1.4.0
*/
do_action( 'astra_main_header_custom_menu_item_after' );
echo '';
}
} else {
$submenu_class = apply_filters( 'astra_primary_submenu_border_class', ' submenu-with-border' );
// Menu Animation.
$menu_animation = astra_get_option( 'header-main-submenu-container-animation' );
if ( ! empty( $menu_animation ) ) {
$submenu_class .= ' astra-menu-animation-' . esc_attr( $menu_animation ) . ' ';
}
/**
* Filter the classes(array) for Primary Menu (
',
'walker' => new Astra_Walker_Page(),
);
$items_wrap = '';
// Primary Menu.
$primary_menu_args = array(
'theme_location' => 'primary',
'menu_id' => 'primary-menu',
'menu_class' => esc_attr( implode( ' ', $primary_menu_classes ) ),
'container' => 'div',
'container_class' => 'main-header-bar-navigation',
'items_wrap' => $items_wrap,
);
if ( has_nav_menu( 'primary' ) ) {
// To add default alignment for navigation which can be added through any third party plugin.
// Do not add any CSS from theme except header alignment.
echo '
';
wp_nav_menu( $primary_menu_args );
echo '
';
} else {
echo '
';
echo '
';
echo '';
echo '
';
echo '
';
}
}
}
}
add_action( 'astra_masthead_content', 'astra_primary_navigation_markup', 10 );
/**
* Add CSS classes for all menu links inside WP Nav menu items.
*
* Right now, if Addon is active we add 'menu-link' class through walker_nav_menu_start_el, but if only theme is being used no class is assigned to anchors.
*
* As we are replacing tag based selector assets to class selector, adding 'menu-link' selector to all anchors inside menu items.
* Ex. .main-header-menu a => .main-header-menu .menu-link
*
* @since 2.5.0
* @param array $atts An array of all parameters assigned to menu anchors.
*/
function astra_menu_anchor_class_for_nav_menus( $atts ) {
if ( ! empty( $atts['class'] ) ) {
$atts['class'] = $atts['class'] . ' menu-link';
} else {
$atts['class'] = 'menu-link';
}
return $atts;
}
add_filter( 'nav_menu_link_attributes', 'astra_menu_anchor_class_for_nav_menus', 11 );
/**
* Add CSS classes for all menu links inside WP Page Menu items.
*
* As we are replacing tag based selector to class selector, adding 'menu-link' selector to all anchors inside menu items.
*
* @since 2.5.0
* @param array $atts An array of all parameters assigned to menu anchors.
*/
function astra_menu_anchor_class_for_page_menus( $atts ) {
if ( ! empty( $atts['class'] ) ) {
$atts['class'] = $atts['class'] . ' menu-link';
} else {
$atts['class'] = 'menu-link';
}
return $atts;
}
add_filter( 'page_menu_link_attributes', 'astra_menu_anchor_class_for_page_menus' );
/**
* Add CSS classes from wp_nav_menu the wp_page_menu()'s menu items.
* This will help avoid targeting wp_page_menu and wp_nav_manu separately in CSS/JS.
*
* @since 1.6.9
* @param array $css_class An array of CSS classes to be applied
* to each list item.
* @param WP_Post $page Page data object.
* @param int $depth Depth of page, used for padding.
* @param array $args An array of arguments.
* @param int $current_page ID of the current page.
* @return Array CSS classes with added menu class `menu-item`
*/
function astra_page_css_class( $css_class, $page, $depth, $args, $current_page ) {
$css_class[] = 'menu-item';
if ( isset( $args['pages_with_children'][ $page->ID ] ) ) {
$css_class[] = 'menu-item-has-children';
}
if ( ! empty( $current_page ) ) {
$_current_page = get_post( $current_page );
if ( $_current_page && in_array( $page->ID, $_current_page->ancestors ) ) {
$css_class[] = 'current-menu-ancestor';
}
if ( $page->ID == $current_page ) {
$css_class[] = 'current-menu-item';
} elseif ( $_current_page && $page->ID == $_current_page->post_parent ) {
$css_class[] = 'current-menu-parent';
}
} elseif ( get_option( 'page_for_posts' ) == $page->ID ) {
$css_class[] = 'current-menu-parent';
}
return $css_class;
}
add_filter( 'page_css_class', 'astra_page_css_class', 20, 5 );
/**
* Function to get site Footer
*/
if ( ! function_exists( 'astra_footer_markup' ) ) {
/**
* Site Footer -