web-dev-qa-db-ja.com

Wp_nav_menuのULを削除する方法

このサイトを検索したところ、この質問に対して多くの 回答 が見つかりました。それらのほとんどは私のテーマに取り組んでいません。

これがI found の1つの解決策であり、それは私の必要性に従って働いています。

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>

しかし、adminを使ってメニューを追加またはアクティブ化しないと、問題が再び発生します。 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>
17
haha

関数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関数にいくつかの引数を渡して他のことを行うこともできます

お役に立てれば。

11
Bainternet

実際には、WordPressはデフォルトでこれをサポートしています。

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

items_wrapのデフォルトは<ul id=\"%1$s\" class=\"%2$s\">%3$s</ul>です。

56
Martti Laine

以下のコードはそれを簡単にするはずです。

<?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

4
Dannamite

<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>' );
2
Pavlo Zamoroka

私にとってうまくいったのはこれです。

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

それが役に立てば幸い。

2
Orbital Pixel