File: /home/vhosts/harpoeditore.it/httpdocs/wp-content/themes/dt-the7/inc/helpers/menu.php
<?php
/**
* Menu helpers.
*
* @package the7/helpers
* @since 3.0.0
*/
// File Security Check
if ( ! defined( 'ABSPATH' ) ) { exit; }
if ( ! function_exists( 'presscore_get_primary_menu_class' ) ) :
/**
* Primary menu wrap classes.
*
* @param string|array $class
* @return array
*/
function presscore_get_primary_menu_class( $class = '' ) {
$classes = presscore_split_classes( $class );
$config = presscore_config();
switch( $config->get( 'header.menu.decoration.style' ) ) {
case 'underline':
$classes[] = 'underline-decoration';
$classes[] = the7_array_match( $config->get( 'header.menu.decoration.style.underline.direction' ), array(
'left_to_right' => 'l-to-r-line',
'from_center' => 'from-centre-line',
'upwards' => 'upwards-line',
'downwards' => 'downwards-line',
) );
break;
case 'other':
$classes[] = 'bg-outline-decoration';
$classes[] = the7_array_match( $config->get( 'header.menu.decoration.style.other.hover.style' ), array(
'outline' => 'hover-outline-decoration',
'background' => 'hover-bg-decoration',
) );
if ( $config->get( 'header.menu.decoration.style.other.hover.line.enabled' ) ) {
$classes[] = 'hover-line-decoration';
}
$classes[] = the7_array_match( $config->get( 'header.menu.decoration.style.other.active.style' ), array(
'outline' => 'active-outline-decoration',
'background' => 'active-bg-decoration',
) );
if ( $config->get( 'header.menu.decoration.style.other.active.line.enabled' ) ) {
$classes[] = 'active-line-decoration';
}
break;
}
if ( presscore_is_gradient_color_mode( $config->get( 'header.menu.hover.color.style' ) ) ) {
$classes[] = 'gradient-hover';
}
if ( $config->get( 'header.menu.show_next_lvl_icons' ) ) {
$classes[] = 'level-arrows-on';
}
$classes[] = the7_array_match( $config->get( 'header.menu.items.margins.style' ), array(
'double' => 'outside-item-double-margin',
'custom' => 'outside-item-custom-margin',
'disabled' => 'outside-item-remove-margin',
) );
$classes = apply_filters( 'presscore_primary_menu_class', $classes );
return presscore_sanitize_classes( $classes );
}
endif;
if ( ! function_exists( 'presscore_get_primary_submenu_class' ) ) :
/**
* Primary menu submenu classes.
*
* @param string|array $class
* @return array
*/
function presscore_get_primary_submenu_class( $class = '' ) {
$classes = presscore_split_classes( $class );
$config = presscore_config();
if ( presscore_is_gradient_color_mode( $config->get( 'header.menu.submenu.hover.color.style' ) ) ) {
$classes[] = 'gradient-hover';
}
$classes[] = the7_array_match( $config->get( 'header.menu.submenu.background.hover.style' ), array(
'background' => 'hover-style-bg',
) );
if ( $config->get( 'header.menu.submenu.show_next_lvl_icons' ) ) {
$classes[] = 'level-arrows-on';
}
$classes = apply_filters( 'presscore_primary_submenu_class', $classes );
return presscore_sanitize_classes( $classes );
}
endif;
if ( ! function_exists( 'presscore_nav_menu_list' ) ) :
/**
* Display secondary nav menu.
*
* @since 3.0.0
*
* @param string $location Menu location.
* @param array $args Arguments like
* array(
* 'menu_wrap_class' => '',
* 'before_menu_name' => '',
* 'after_menu_name' => '',
* 'submenu_class' => 'sub-nav',
* ).
*/
function presscore_nav_menu_list( $location, $args = array() ) {
$locations = get_nav_menu_locations();
$menu = isset( $locations[ $location ] ) ? wp_get_nav_menu_object( $locations[ $location ] ) : null;
if ( ! $menu ) {
return;
}
$args = wp_parse_args(
$args,
array(
'menu_wrap_class' => '',
'before_menu_name' => '',
'after_menu_name' => '',
'submenu_class' => 'sub-nav',
)
);
$classes = presscore_split_classes( $args['menu_wrap_class'] );
array_unshift( $classes, 'mini-nav' );
echo '<div class="' . esc_attr( implode( ' ', $classes ) ) . '">';
presscore_nav_menu(
array(
'theme_location' => $location,
'items_wrap' => '<ul id="' . esc_attr( "{$location}-menu" ) . '">%3$s</ul>',
'submenu_class' => $args['submenu_class'],
'parent_is_clickable' => true,
'fallback_cb' => '',
)
);
echo '<div class="menu-select"><span class="customSelect1"><span class="customSelectInner">' . $args['before_menu_name'] . esc_html( $menu->name ) . $args['after_menu_name'] . '</span></span></div>';
echo '</div>';
}
endif;
if ( ! function_exists( 'presscore_primary_nav_menu' ) ) :
/**
* Display theme primary nav menu.
*
* @since 3.0.0
* @param string $location
*/
function presscore_primary_nav_menu( $location ) {
do_action( 'presscore_primary_nav_menu_before' );
presscore_nav_menu( array(
'theme_location' => $location,
'items_wrap' => '%3$s',
'submenu_class' => implode( ' ', presscore_get_primary_submenu_class( 'sub-nav' ) ),
'parent_is_clickable' => presscore_config()->get( 'header.menu.submenu.parent_clickable' ),
) );
do_action( 'presscore_primary_nav_menu_after' );
}
endif;
if ( ! function_exists( 'presscore_has_mobile_menu' ) ) :
/**
* This helper checks if a page has mobile menu on it.
*
* @since 3.0.0
* @return boolean
*/
function presscore_has_mobile_menu() {
return apply_filters( 'presscore_has_mobile_menu', has_nav_menu( 'mobile' ) );
}
endif;
/**
* Display mobile nav menu.
*
* @since 7.6.0
*
* @param string $location Menu location to display.
*/
function the7_display_mobile_menu( $location ) {
do_action( 'presscore_primary_nav_menu_before' );
presscore_nav_menu(
[
'theme_location' => $location,
'items_wrap' => '%3$s',
'submenu_class' => implode( ' ', presscore_get_primary_submenu_class( 'sub-nav' ) ),
'parent_is_clickable' => presscore_config()->get( 'header.menu.submenu.parent_clickable' ),
'walker' => new The7_Walker_Nav_Menu_Mobile(),
]
);
do_action( 'presscore_primary_nav_menu_after' );
}
/**
* Return menu cache key based on $args.
*
* @since 6.4.0
*
* @param array $args Some array.
*
* @return string
*/
function the7_get_menu_cache_key( $args ) {
$args['walker'] = get_class( $args['walker'] );
return 'the7_menu_cache-' . md5( wp_json_encode( $args ) );
}
if ( ! function_exists( 'presscore_nav_menu' ) ) :
/**
* @param array $args Arguments.
*
* @return void|string
*/
function presscore_nav_menu( $args = array() ) {
$args = wp_parse_args(
$args,
[
'theme_location' => 'primary',
'container' => false,
'container_class' => false,
'menu_class' => false,
'menu_id' => 'mainmenu',
'fallback_cb' => 'presscore_page_menu',
'before' => '',
'after' => '',
'items_wrap' => '<ul id="%1$s">%3$s</ul>',
'echo' => true,
'submenu_class' => 'sub-nav',
'parent_is_clickable' => true,
]
);
$args = apply_filters( 'presscore_nav_menu_args', $args );
if ( empty( $args['walker'] ) ) {
$args['walker'] = new The7_Walker_Nav_Menu();
}
$nav_menu = apply_filters( 'presscore_pre_nav_menu', null, $args );
if ( null !== $nav_menu ) {
if ( $args['echo'] ) {
echo $nav_menu;
return;
}
return $nav_menu;
}
$html = wp_cache_get( the7_get_menu_cache_key( $args ), 'the7-tmp' );
if ( ! $html ) {
$_args = $args;
$_args['echo'] = false;
$html = wp_nav_menu( $_args );
wp_cache_add( the7_get_menu_cache_key( $args ), $html, 'the7-tmp' );
}
if ( $args['echo'] ) {
echo $html;
} else {
return $html;
}
}
endif;
if ( ! function_exists( 'presscore_page_menu' ) ) :
function presscore_page_menu( $args = array() ) {
$defaults = array(
'sort_column' => 'menu_order, post_title',
'container_class' => 'nav-bg',
'menu_id' => 'nav',
'echo' => false,
'link_before' => '',
'link_after' => '',
);
$args = wp_parse_args( $args, $defaults );
$args = apply_filters( 'wp_page_menu_args', $args );
$menu = '';
$list_args = $args;
$list_args['echo'] = false;
$list_args['title_li'] = '';
$list_args['walker'] = new The7_Walker_Page();
$menu .= str_replace( array( "\r", "\n", "\t" ), '', wp_list_pages( $list_args ) );
if ( isset( $menu ) ) {
$menu = sprintf(
$args['items_wrap'],
$args['menu_id'],
$args['menu_class'],
$menu
);
}
$menu = apply_filters( 'wp_page_menu', $menu, $args );
if ( $args['echo'] ) {
echo $menu;
return;
} else {
return $menu;
}
}
endif;