item_spacing ) && 'discard' === $args->item_spacing ) {
$t = '';
$n = '';
} else {
$t = "\t";
$n = "\n";
}
$indent = str_repeat( $t, $depth );
// Default class.
$classes = array( 'sub-menu' );
/**
* Filters the CSS class(es) applied to a menu list element.
*
* @since 4.8.0
*
* @param string[] $classes Array of the CSS classes that are applied to the menu `
` element.
* @param stdClass $args An object of `wp_nav_menu()` arguments.
* @param int $depth Depth of menu item. Used for padding.
*/
$class_names = join( ' ', apply_filters( 'nav_menu_submenu_css_class', $classes, $args, $depth ) );
$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
$output .= "{$n}{$indent}{$n}";
}
}
/**
* Remove the id="" on nav menu items
*/
add_filter( 'nav_menu_item_id', '__return_null' );
/**
* add span around text in links, add icon, add description.
*/
function ascend_menu_nav_args($args, $item, $depth) {
$ascend_iconmenu = get_post_meta($item->ID, '_menu_item_kticonmenu', true);
$args->link_before = ! empty( $ascend_iconmenu) ? '' : '';
if ( $depth == 0 ) {
$args->after = ! empty( $item->description ) ? '' . esc_attr( $item->description ) . '' : '';
}
return $args;
}
add_filter( 'nav_menu_item_args', 'ascend_menu_nav_args', 20, 3 );
/**
* Add Classes to menu.
*
* @param object $classes the menu item args.
* @param object $args the menu item object.
* @param int $depth the menu item depth.
*/
function ascend_menu_submenu_nav_args( $classes, $args, $depth ) {
$classes[] = 'sf-dropdown-menu';
$classes[] = 'dropdown';
return $classes;
}
add_filter( 'nav_menu_submenu_css_class', 'ascend_menu_submenu_nav_args', 10, 3 );
/**
* add classes
*/
function ascend_menu_nav_li_css_classes( $classes, $item, $args, $depth = null ) {
if ( $ascend_lgmenu = get_post_meta( $item->ID, '_menu_item_ktlgmenu', true ) ) {
$classes[] = 'kt-lgmenu';
if ( $ascend_columnmenu = get_post_meta( $item->ID, '_menu_item_ktcolumnmenu', true ) ) {
$classes[] = 'kt-menu-column-' . $ascend_columnmenu;
}
}
if ( in_array( 'menu-item-has-children', $classes ) ) {
if ( $depth === 0 ) {
$classes[] = 'sf-dropdown';
} elseif ( $depth === 1 ) {
$classes[] = 'sf-dropdown-submenu';
} elseif ( $depth === 2 ) {
$classes[] = 'sf-dropdown-submenu';
} elseif ( $depth === 3 ) {
$classes[] = 'sf-dropdown-submenu';
}
}
return $classes;
}
add_filter( 'nav_menu_css_class', 'ascend_menu_nav_li_css_classes', 20, 4 );
/**
* Clean up wp_nav_menu_args
*
* Remove the container
*
* @param array $args array of args.
*/
function ascend_nav_menu_args( $args = '' ) {
$ascend_args = array();
if ( ( ! isset( $args['container_class'] ) || empty( $args['container_class'] ) ) && ( ! isset( $args['container_id'] ) || empty( $args['container_id'] ) ) ) {
$ascend_args['container'] = false;
}
if ( ! $args['items_wrap'] ) {
$ascend_args['items_wrap'] = '';
}
return array_merge( $args, $ascend_args );
}
add_filter( 'wp_nav_menu_args', 'ascend_nav_menu_args', '10' );
/**
* Custom Menu Walker
*/
class ascend_mobile_walker extends Walker_Nav_Menu {
function start_lvl(&$output, $depth = 0, $args = null) {
$output .= "\n