To create mega menu by using ACF, you need to follow three steps:
1. Create a repeater field in ACF, and Links field (Menu title will be optional)


add_filter('walker_nav_menu_start_el', 'custom_nav_menu_start_el', 10, 4);
function custom_nav_menu_start_el($item_output, $item, $depth, $args) {
//add_filter('walker_nav_menu_start_el', function($item_output, $item, $depth, $args) {
if (!is_object($item) || !isset($item->object)) {
return $item_output;
}
//Check if it's mobile menu (menu id is 4)
if ($args->menu == 4) {
$megamenu = get_field('add_mega_menu', $item);
if($megamenu){
$item_output .= '<div class="navigationList">';
foreach ($megamenu as $key => $mm) {
$item_output .= '<div class="menuList">';
$item_output .= '<div class="menuTitle"> '.$mm['menu_title'].' </div>';
if($mm['menu_link']){
$item_output .= '<ul>';
foreach ($mm['menu_link'] as $key => $links) {
$item_output .= '<li><a href="'.$links['add_links']['url'].'">'.$links['add_links']['title'].'</a></li>';
}
$item_output .= '<ul>';
}
$item_output .= '</div>';
}
$item_output .= '</div>';
}
}
return $item_output;
}
