我在该站点上搜索,找到了有关该问题的许多答案。他们中的大多数人都不适合我的主题。

这是我找到的一个解决方案,它可以根据我的需要运行。的ul。所以在我的主题中,我只写了

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

问题:

无论菜单是否处于活动状态,如何删除http://domain.com/wp-admin/nav-menus.php。让我知道


最后我成功了:)

评论

为什么要在再次添加UL时删除它?您可以使用menu_class和menu_id参数在UL上设置class和/或id属性。

我要用超级鱼。如果激活了菜单,则menu_class和menu_id才起作用。如果菜单不存在,则menu_class和menu_id不是
    而是
    。多数民众赞成为什么对wp_nav_menu()有太多疑问,您可以对其进行测试:)

    #1 楼

    wp_nav_menu函数采用一个参数fallback_cb,该参数是菜单不存在时要运行的函数的名称。
    因此将代码更改为以下内容: >
    您甚至可以从菜单中删除容器,并通过向wp_nav_menu函数发送更多参数来做其他事情

    希望有帮助。

    评论


    @בנייתאתרים-感谢您的解释。但是我在这里变得越来越模糊。根据nav-menu-template.php的注释fallback_cb-如果菜单不存在,则将触发回调函数。默认为“ wp_page_menu”。设置为false时不进行任何回退如果将fallback_cb设置为false,应该如何替换wp_nav_menu_no_ul()才能工作?因为它现在返回空白。

    –哈哈
    2011-1-28 11:49



    现在理解:)非常感谢בנייתאתרים。顺便说一句,我怎么发音你的昵称?我的哈哈

    –哈哈
    11年1月28日在12:08



    大声笑,很高兴你去。

    –互联网
    11年1月28日在12:17

    我想知道同一件事,我想是希伯来语,出于好奇,这将是准确的翻译.. :)

    – t31os
    2011年1月28日15:55

    :)是的,它是希伯来语和它的昵称。

    –互联网
    2011-1-28在16:17



    #2 楼

    实际上,WordPress默认情况下支持此功能:

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


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

    评论


    这是正确的答案。在添加
      之后,以编程方式查找并替换以删除
        的其他答案只是向后

        –mikemike
        15年3月20日在10:51

        'container'=> false,如果您也想摆脱包装的


        –乔治·迪米特里亚迪斯(George Dimitriadis)
        17年8月10日在10:11

        默认情况下,它在WordPress中是真正可配置的。谢谢!

        –阿卜杜拉·阿尔巴布(Abdalla Arbab)
        18年4月2日在11:44

        最佳答案,无需黑客

        –艾迪
        19年2月2日,下午2:58

        在wp 5.2中这对我不起作用

        –rafaelphp
        19年6月30日在16:48

    #3 楼

    下面的代码应该简单地做到这一点。

    #4 楼

    如果只想打印<a>标签,则可以使用以下方式:

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


    评论


    这项工作对我来说很完美,在wp 5.2中仅设置`'items_wrap'=>'%3 $ s'`无效

    –rafaelphp
    19年6月30日在16:50

    #5 楼

    对我来说,这是行得通的:

    <?php wp_nav_menu( array(
           'container' => '',
           'items_wrap' => '%3$s' 
    ) ); ?>
    


    希望对您有所帮助。

    #6 楼

    我知道这个答案并不完全是针对这个问题的,但是有很多人知道如何在WordPress中删除ul和li标签,并在WordPress中添加另一个标签。

    像在应用我的代码之前WordPress在菜单中提供了这些类型的输出/>
    <ul class="*****"><li>abc</li></ul>
    


    这给出以下格式的输出

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