问题描述

我在这个网站上搜索,发现很多 answers 的这个问题。他们中的大多数人不是在我的主题工作。

这是一个解决方案我 found,它的工作,根据我的需要。

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);

}

此代码将在 wp_nav_menu()的开始和结束时删除 ul 。所以在我的主题我只是写

<ul class="primary-nav">
<?php  wp_nav_menu_no_ul(); ?>
</ul>

但是当我不通过管理员添加或激活任何菜单时,问题再次出现。 http://domain.com/wp-admin/nav-menus.php

题 :

菜单是否激活,如何清除<div><ul>**</ul></div> 。让我知道


最后我得到它的工作:) 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>

最佳解决方案

函数 wp_nav_menu 接受 fallback_cb 的参数,该参数是要在菜单不存在的情况下运行的函数的名称。所以改变你的代码到这样的东西:

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;
}

你甚至可以从菜单中删除容器,并做更多的参数发送到 wp_nav_menu function

希望这可以帮助。

次佳解决方案

实际上,WordPress 默认支持这一点:

wp_nav_menu(array(
    'items_wrap' => '%3$s'
));

items_wrap 的默认值为<ul id="%1$s" class="%2$s">%3$s</ul>

第三种解决方案

下面的代码应该很简单。

<?php 

  $my_menu = array( 
  'menu' => 'main-menu',
  'container' => '',
  'items_wrap' => '%3$s' 
  );

  wp_nav_menu( $my_menu );

?>

参考 wp_nav_menu 功能的链接 http://codex.wordpress.org/Function_Reference/wp_nav_menu

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。