'nav', 'container_id' => '', 'container_class' => 'sub-menu-container', 'submenu_class' => 'sub-menu', 'submenu_id' => '', 'xpath' => "./li[contains(@class,'current-menu-item') or contains(@class,'current-menu-ancestor')]/ul", 'theme_location' => '', 'echo' => true ); $args = wp_parse_args( $args, $defaults ); $args = (object) $args; $menu = wp_nav_menu( array( 'theme_location' => $args->theme_location, 'container' => '', 'echo' => false ) ); $menu = simplexml_load_string($menu); $submenu = $menu->xpath($args->xpath); if (empty($submenu)) { return; } // Set value of class attribute $submenu[0]['class'] = $args->submenu_class; // Add "id" attribute if ($args->submenu_id) { $submenu[0]->addAttribute('id', $args->submenu_id); } if ($args->container) { $submenu_sxe = simplexml_load_string($submenu[0]->saveXML()); $sdm = dom_import_simplexml($submenu_sxe); if ($sdm) { $xmlDoc = new DOMDocument('1.0', 'utf-8'); $container = $xmlDoc->createElement($args->container); // Add "class" attribute for container if ($args->container_class) { $container->setAttribute('class', $args->container_class); } // Add "id" attribute for container if ($args->container_id) { $container->setAttribute('id', $args->container_id); } $smsx = $xmlDoc->importNode($sdm, true); $container->appendChild($smsx); $xmlDoc->appendChild($container); } } if (isset($xmlDoc)) { $output = $xmlDoc->saveXML(); } else { $output = $submenu[0]->saveXML(); } if (!$args->echo) { return $output; } echo $output; }