問題描述

我在這個網站上搜索,發現很多 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。