I search on this site and found many answers for this question. Most of them is not working on my theme.
Here is a one solution I found and it's working according to my need.
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
This code will remove ul at beginning and the end of wp_nav_menu(). So in my theme I just write
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
But the problem is coming again when I do not add or activate any menu via admin. http://domain.com/wp-admin/nav-menus.php
Question :
How do I remove the <div><ul>**</ul></div> whether the menu is active or not. Let me know
Finally I got it worked :) functions.php
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary',
'fallback_cb'=> 'default_page_menu'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
function default_page_menu() {
wp_list_pages('title_li=');
}
header.php
<ul class="primary-nav">
<?php wp_nav_menu_no_ul(); ?>
</ul>
menu_classandmenu_idparameters to set a class and/or id attribute on the UL. – user2370 Jan 28 '11 at 13:52menu_classandmenu_idonly will working if menu is activated. If the menu doesn't existsmenu_classandmenu_idis not as<ul>but as<div>. thats why too much question aboutwp_nav_menu()you may test it :) – haha Jan 28 '11 at 14:10