admin管理员组文章数量:1122846
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. .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>
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>
Share
Improve this question
edited Apr 13, 2017 at 12:37
CommunityBot
1
asked Jan 28, 2011 at 8:32
hahahaha
8393 gold badges8 silver badges15 bronze badges
2
|
7 Answers
Reset to default 11The function wp_nav_menu takes an argument of fallback_cb which is the name of the function to run if the menu doesn't exist. so change you code to something like this:
function wp_nav_menu_no_ul()
{
$options = array(
'echo' => false,
'container' => false,
'theme_location' => 'primary',
'fallback_cb'=> 'fall_back_menu'
);
$menu = wp_nav_menu($options);
echo preg_replace(array(
'#^<ul[^>]*>#',
'#</ul>$#'
), '', $menu);
}
function fall_back_menu(){
return;
}
you can even remove the container from the menu and do other stuff with some more arguments sent to the wp_nav_menu function
Hope this helps.
Actually, WordPress supports this by default:
wp_nav_menu(array(
'items_wrap' => '%3$s'
));
The default for items_wrap
is <ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>
.
The below code should simple do it.
<?php
$my_menu = array(
'menu' => 'main-menu',
'container' => '',
'items_wrap' => '%3$s'
);
wp_nav_menu( $my_menu );
?>
Reference this link for the wp_nav_menu function http://codex.wordpress.org/Function_Reference/wp_nav_menu
If you want to print only <a>
tags, you may go this way:
$primaryMenu = array(
'theme_location' => 'primary',
'menu' => '',
'container' => '',
'container_class' => false,
'container_id' => '',
'menu_class' => 'menu',
'menu_id' => 'primary-menu',
'echo' => false,
'fallback_cb' => 'wp_page_menu',
'before' => '',
'after' => '',
'link_before' => '',
'link_after' => '',
'depth' => 0,
'walker' => ''
);
echo strip_tags( wp_nav_menu( $primaryMenu ), '<a>' );
For me what worked was this:
<?php wp_nav_menu( array(
'container' => '',
'items_wrap' => '%3$s'
) ); ?>
Hope it helps.
I know that this answer is not completely for this question but there are so many people who come to know how to remove ul and li tag in WordPress and add another tag in WordPress.
Like before applying my code WordPress gives these types of output in menu
<ul class="*****"><li>abc</li></ul>
But someone wants to change ul into div and li into a tag then you should use below code
<?php
$menuParameters = array(
'menu' => 'primary_menu',
'link_before' => '<span>',
'link_after' => '</span>',
'before' => '<div class="tp-primary-header mui-top-home">',
'after' => '</div>',
'container' => false,
'echo' => false,
'depth' => 0,
);
echo strip_tags(wp_nav_menu( $menuParameters ), '<a><span><div>' );
?>
This gives output in the following format
<div class="tp-primary-header mui-top-home"><a href="#"><span>ABC</span></a></div>
<div class="tp-primary-header mui-top-home"><a href="#"><span>def</span></a></div>
<div class="tp-primary-header mui-top-home"><a href="#"><span>XYZ</span></a></div>
<?php
$params = array(
'theme_location' => 'menu_location',
'container' => false,
'echo' => false,
'items_wrap' => '%3$s',
);
echo strip_tags(wp_nav_menu($params), '<a>');
?>
本文标签: menusHow do I remove UL on wpnavmenu
版权声明:本文标题:menus - How do I remove UL on wp_nav_menu? 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736300968a1931013.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
menu_class
andmenu_id
parameters to set a class and/or id attribute on the UL. – user2370 Commented Jan 28, 2011 at 13:52menu_class
andmenu_id
only will working if menu is activated. If the menu doesn't existsmenu_class
andmenu_id
is not as<ul>
but as<div>
. thats why too much question aboutwp_nav_menu()
you may test it :) – haha Commented Jan 28, 2011 at 14:10